【问题标题】:Accessing columns in data.table using a character vector of column names使用列名的字符向量访问 data.table 中的列
【发布时间】:2013-02-07 02:45:01
【问题描述】:

假设我有一个 R 数据表:

 DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)

我有一个列名的字符向量,我想提取或者更一般地对其进行操作:

cols = c("x","y")

例如,如何使用cols来生成等价的

 DT[,lapply(.SD[,list(x,y)], min) ]

有没有办法使用 cols 向量指定 list(x,y)?

【问题讨论】:

标签: r data.table


【解决方案1】:

您可以使用 data.table 语法 .. 为变量“查找一级”(如在 Unix 终端中):

> all.equal(DT[,list(x,y)], DT[, ..cols])
[1] TRUE
> all.equal(DT[,.SD[,list(x,y)][min(v)]], DT[,.SD[ ,min(v)], .SDcols = cols])
[1] TRUE

FAQ 1.6 下的更多详细信息我相信:http://datatable.r-forge.r-project.org/datatable-faq.pdf

【讨论】:

  • 谢谢!在您回答问题时,我稍微改变了我的问题,但解决方案似乎仍然不错。
  • 在 .SD 中使用 with=FALSE 似乎是一个有用的习惯用法。如果这是 data.table 的推荐方法,我想知道它是否应该在 data.table 或示例或常见问题解答中? @MatthewDowle
  • @DavidR 也许是 '.SDcols' ?查看 ?data.table 并在此标签中搜索“SDcols”。
  • @DavidR 没问题。几天前关于 .SDcols 的一个特别好的答案不容错过:stackoverflow.com/a/14937323/403310
猜你喜欢
  • 2017-10-24
  • 2015-08-14
  • 2015-11-17
  • 2020-05-04
  • 1970-01-01
  • 2017-08-11
  • 2015-02-08
  • 2021-11-20
  • 2016-11-03
相关资源
最近更新 更多