【发布时间】:2017-10-20 17:16:47
【问题描述】:
我想从使用变量指定列名的data.table 对象中提取列值。例如:
DT <- data.table(x = c(1, 2), y = c(3, 4), z = c(5, 6))
col <- "z"
然后
> is.vector(DT[, col, with = F])
[1] FALSE
因为它会返回一个 data.table 对象。
我也尝试过:is.vector(DT[, (col), with = F]) 和:is.vector(DT[, ..col]),结果相同。我尝试了其他可能产生错误的可能性。
直接使用变量名有效:
> is.vector(DT[, z])
[1] TRUE
我发现了这个post,它使用列位置而不是通过引用使用名称来解决它:
> is.vector(DT[[3]])
[1] TRUE
我在data.tabledocumentation 中没有找到关于这个特殊案例的明确参考。我确信这是一种简单的方法,但我没有找到方法。
【问题讨论】:
-
@Roland 这个解决方案是按索引位置,现在我意识到对于名称引用它也有效,但没有明确提及。
-
现在我发现这个解决方案是由@Frank 在这个post 的回答解决的,这个问题不是针对这个特定问题的,但他的解决方案也解决了我的问题。
-
该答案解释了索引解决方案的工作原理。按列名提取的工作原理完全相同。
-
FAQ 中的前几个问题在这里介绍了选项(FAQ 被视为文档的一部分)。输入
vignette("datatable-faq")。 (顺便说一句,我认为网站上的常见问题解答已过时。)
标签: r data.table