我有以下数据表
library(data.table)
df <- data.table(col1 = 1:3
, col2 = 2:4
)
我想动态操作一列,其列名存储在下面的对象中:
metric <- 'col2'
但是以下失败了
df[, `:=` (col1 = col1 - 1
, as.name(metric) = as.numeric(get(metric))
)
]
错误:
Error: unexpected '=' in:
"df[, `:=` (col1 = col1 - 1
, as.name(metric) ="
我想在一次调用中对
col1
以及名称存储在 metric
中的任何列进行操作。
除了以下(有效)之外还有其他方法吗
df[, c('col1', metric) := .(col1 - 1
, as.numeric(get(metric))
)
]
env
,我将在作业中添加 2,以便我们可以看到它正在修改某些内容:
df[, `:=`(
col1 = col1 - 1,
col = as.numeric(col) + 2
), env = list(col = metric)]
df
# col1 col2
# <num> <num>
# 1: 0 4
# 2: 1 5
# 3: 2 6