带有空格的列名的data.table操作失败

时间:2015-06-10 13:08:55

标签: r data.table

可重复的示例

#Use the Iris data set
library(data.table)
iris 
colnames(iris)[3] <- "Petal Length"
iris <- as.data.table(iris)

访问没有空格的列

iris[,Petal.Width]

然而,访问名称包含空格的列不起作用

iris[,Petal Length]
iris[,'Petal Length']

唯一的解决方案似乎是

iris[,iris$'Petal Length']

评论 我是data.table的新手。我知道data.table中有很多怪癖;这是其中之一吗?我会改变我的变量名来摆脱空格,但我不愿意,如果我不需要。我还阅读了之前关于列名称的问题 - 我从最后一个问题更新允许的两年后就明白了 - 这可以在colname没有空格的时候看到。

1 个答案:

答案 0 :(得分:14)

按照data.table FAQ第1.1-1.3和2.17点的说明使用with = FALSE

iris[ ,'Petal Length', with = FALSE]

并确保阅读优秀的introduction to data.table PDF vignette and the new HTML vignettes

在这种情况下,对于您所期望的(向量),使用[[更合适:

iris[['Petal Length']]

或者,您也可以将列名称称为j中的变量:

iris[, `Petal Length`] # note the backticks.