【发布时间】:2018-01-17 13:35:15
【问题描述】:
我需要从 data.table 中的列交叉引用到其中的多个其他列。作为一个例子,我有:
library(data.table)
dt = data.table(mtcars)
sub = dt[1:3]
sub[, v1 := ('vs', 'am', 'gear')]
head(dt)
mpg cyl disp hp drat wt qsec vs am gear carb
21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
所以列 v1 包含应该采用哪一列的值的信息。因此,对于 sub 我想要一个具有值的新列: 第 1 行:第一行的“vs”列中的值 第 2 行:第二行中“am”列的值 第 3 行:“齿轮”第三行的值 简而言之,像
这样的 data.tablempg cyl disp hp drat wt qsec vs am gear carb v1 v2
21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 vs 0
21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 am 1
22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 gear 4
不幸的是
sub[, v2 := get(value))]
或
sub[, v2 := get((sub$value))]
不会导致解决方案,因为 v2 将等于 [0,0,1] 但不等于 [0,1,4]
在此先感谢
【问题讨论】:
-
@jaap 逻辑是我得到一个项目列表,其中引用了他们应该获得的价格类型的名称。因此,由于引用与列具有相同的名称,我想找到一种巧妙的方式来映射它。这只是一个具有我需要的逻辑的可重现示例
标签: r data.table