如何使用字符串变量使用$表示法选择数据框列

时间:2014-05-18 00:18:41

标签: r dataframe

从我用R做过的阅读中,我可以通过以下两种方法之一在数据框中选择一列:frame[,column]frame$column。但是,当我将一个字符串作为变量时,它只能在第一个字符串中起作用。换句话说,请考虑以下事项:

我有一个数据框,tmp,一个较大的问题响应数据框的子集。 V1是响应者的id,Q5.3是响应,1或0:

            V1 Q5.3
2 R_bdyKkzWcvBxDFTT    1
3 R_41wnKUQcM8mUW2x    0
4 R_2ogeykkgbH2e4RL    1
5 R_8D4jzMBfYO0M0ux    1
6 R_3KPgP2pxWROnip7    1

str(tmp)

'data.frame':   5 obs. of  2 variables:
     $ V1  : Factor w/ 364 levels "R_0039orNoOoWaDQx",..: 256 116 70 201 95
     $ Q5.3: num  1 0 1 1 1

现在,我定义一个变量x,它保存其中一列的名称字符串。

x<-"Q5.3"

tmp [,x]返回我认为它应该返回的内容:

tmp[,x]

[1] 1 0 1 1 1

TMP $&#34; Q5.3&#34;返回我认为它应该返回的内容:

tmp$"Q5.3"

[1] 1 0 1 1 1
然而,

tmp $ x会返回

tmp$x

NULL

如何告诉R将tmp $ x解释为tmp $&#34; Q5.3&#34;。

1 个答案:

答案 0 :(得分:21)

如果您的变量x的列名称位于tmp,则tmp[,x]tmp[[x]]是提取它的正确方法。您无法获得R将tmp$x视为tmp$"Q5.3"tmp$x将始终引用名为&#34; x&#34;的项目在&#34; tmp&#34;。