【问题标题】:Reference `data.table` column by name按名称引用 `data.table` 列
【发布时间】:2014-05-31 18:04:22
【问题描述】:

假设有:

DT = data.table(a=1, b=2, "a+b"=8)

并且有变量col="a+b"引用DT的第三列

如何通过引用对该列执行操作?假设我想将col 乘以2,所以在上面的例子中,结果应该是8*2=16,而不是(1+2)*2=6

例如,这显然是行不通的:

DT[, c:=as.name(col)*2]

【问题讨论】:

  • 我预测在data.table 结构的列名中使用 R 运算符将“以失败告终”。您将获得更难理解且错误较多的代码。
  • Ups,已经在各地的列名中使用 R 运算符,确实感觉很复杂而且非常有问题 :) 我们通过实践或聆听更有经验的 userR 来学习,谢谢!

标签: r data.table


【解决方案1】:

听起来你在找get

DT = data.table(a=1, b=2, "a+b"=8)
col = "a+b"
DT[, get(col) * 2]
# [1] 16
DT[, c := get(col) * 2]
DT
#    a b a+b  c
# 1: 1 2   8 16

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2013-08-08
    • 1970-01-01
    • 2015-10-20
    • 2012-03-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多