假设我有一个名为mysample的data.table。它有多个列,其中两列为weight
和height
。我可以通过输入以下内容来访问权重列:
mysample[,weight]
但是当我尝试写mysample[,colnames(mysample)[1]]
时,我看不到weight
的元素。我的代码有问题吗?
答案 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