使用间隔调用特定列

问题描述

我有一个包含许多列的数据框。 我想创建一个仅包含某些列的新数据框,因此我使用了.style()效果很好。

subset

要使事情复杂化,我希望使用一个间隔来标识子集中的一列,例如newDF<-subset(oldDF,col1==1) 。 例如,我希望新的dataFrame包含X的值大于零的oldDF的所有行

Col2Name

问题是,当我使用X <- "colName2" newDF<-subset(oldDF,X>0) 运行此程序时,我什么也没得到。

当我使用特定的列名(而不是间隔)运行它时

X

我得到正确的结果。

当我使用oldDF [,X]测试X中的值时,我得到了正确的列。

我想念什么?我在做什么错了?

解决方法

您可以尝试以下方式:

newdf <- olddf[(olddf$colName2 > 0),]
,

由于您尚未提供数据,因此我以mtcars数据集为例。使用时:

subset(mtcars,cyl == 4)

R正在cyl中寻找名为mtcars的列。现在,当您这样做时:

X <- "cyl" 
subset(mtcars,X == 4)

R将在X中查找名为mtcars的列,该列显然不存在,因此将提供一个空数据框。

在某些情况下,您可以子集通过变量的数据框,而使用subset并不是其中一种。您还会注意到mtcars$cyl可以正常工作,但是mtcars$X出于相同的原因不能正常工作。

当您想使用变量对数据框进行子集化时,可以使用mtcars[,X]mtcars[[X]]。(如您所知)。