【问题标题】:Extract a column by reference from a data.table as a vector通过引用从 data.table 中提取列作为向量
【发布时间】: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


【解决方案1】:

我们可以使用[[将列提取为向量

is.vector(DT[[col]])
#[1] TRUE

【讨论】:

  • 现在我发现这个解决方案是由@Frank 回答post
猜你喜欢
  • 2013-12-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
相关资源
最近更新 更多