如何在R中取消引用字符串以访问数据表中的列

时间:2015-04-25 21:00:24

标签: r data.table

假设我有一个名为mysample的data.table。它有多个列,其中两列为weightheight。我可以通过输入以下内容来访问权重列: mysample[,weight]

但是当我尝试写mysample[,colnames(mysample)[1]]时,我看不到weight的元素。我的代码有问题吗?

2 个答案:

答案 0 :(得分:2)

请参阅data.table FAQ的第1.1节:http://cran.r-project.org/web/packages/data.table/vignettes/datatable-faq.pdf

colnames(mysample)[1]计算字符向量“weight”,data.table中的第二个参数J是在DT范围内计算的表达式。因此,“权重”评估为字符向量“权重”本身,您无法看到“权重”列的元素。要实际上对“weight”列进行子集,您应该尝试:

mysample[,colnames(mysample)[1], with = F]

答案 1 :(得分:0)

您的语法应适用于数据框。 data.table有其独特的规则。

df <- data.frame(a=1:3, b=4:6)
df
  a b
1 1 4
2 2 5
3 3 6

df[,"a"]
[1] 1 2 3
df$a
[1] 1 2 3
df[,1]
[1] 1 2 3
df[,colnames(df)[1]]
[1] 1 2 3