如何使用数据表中的列作为变量名称,以便根据所述列从其他列中获取值。
library(data.table)
a = c(2,3,5)
b = c(5,7,7)
c = c(1,2,3)
x = c ('a','b','c')
dt <- data.table(a,b,c,x)
> dt
a b c x
1: 2 5 1 a
2: 3 7 2 b
3: 5 7 3 c
输出我希望基于第x列的值的y列,该列包含要获取的值的列名。
dt
a b c x y
1: 2 5 1 a 2
2: 3 7 2 b 7
3: 5 7 3 c 3
我尝试了
dt[,get(x)]
dt[,match(x,colnames(dt))]
答案 0 :(得分:3)
通过遍历行序列,用get
提取值并将其分配为创建“ y”
dt[, y := .SD[, get(x), seq_len(.N)]$V1]
dt
# a b c x y
#1: 2 5 1 a 2
#2: 3 7 2 b 7
#3: 5 7 3 c 3