就地加入多列 data.table
Join in place multiple columns data.table
我需要使用 data.table
加入 20 多个列,我不能使用以下 中的语法,因为这意味着多次写入列的名称。我可以提供一个示例,其中我必须加入 5 列(在我的实际数据中有超过 20 列):-
data <- data.table(ref = 1:6, names = letters[1:6])
b <- data.table(ref = 1:6, radius = runif(6), height = rnorm(6), weight = rnorm(6), volume = rnorm(6), money = rnorm(6))
而且我不想像下面这样加入列的名称:-
data[b, colnames(b)[-1] := .(i.radius, i.height, i.weight, i.volume, i.money), on = "ref"]
有什么办法可以把RHS
写成向量形式吗
提前致谢
mget
的可能解决方案:
cols <- colnames(b)[-1]
data[b,(cols) := mget(cols), on = "ref"][]
ref names radius height weight volume money
<int> <char> <num> <num> <num> <num> <num>
1: 1 a 0.9757437 -1.2441942 -0.19825867 0.7934811 0.6642228
2: 2 b 0.9752424 1.0112435 -1.27333411 0.9296093 -1.1942749
3: 3 c 0.6989610 0.8868158 -1.54361300 -0.4824725 -0.8368856
4: 4 d 0.4336850 0.8949459 1.45199656 -0.3262636 -0.5158351
5: 5 e 0.9989011 0.4237771 0.04365383 -1.4086310 0.7379102
6: 6 f 0.2640407 -2.0085267 -0.15621784 1.3278945 0.2616385
我需要使用 data.table
加入 20 多个列,我不能使用以下
data <- data.table(ref = 1:6, names = letters[1:6])
b <- data.table(ref = 1:6, radius = runif(6), height = rnorm(6), weight = rnorm(6), volume = rnorm(6), money = rnorm(6))
而且我不想像下面这样加入列的名称:-
data[b, colnames(b)[-1] := .(i.radius, i.height, i.weight, i.volume, i.money), on = "ref"]
有什么办法可以把RHS
写成向量形式吗
提前致谢
mget
的可能解决方案:
cols <- colnames(b)[-1]
data[b,(cols) := mget(cols), on = "ref"][]
ref names radius height weight volume money
<int> <char> <num> <num> <num> <num> <num>
1: 1 a 0.9757437 -1.2441942 -0.19825867 0.7934811 0.6642228
2: 2 b 0.9752424 1.0112435 -1.27333411 0.9296093 -1.1942749
3: 3 c 0.6989610 0.8868158 -1.54361300 -0.4824725 -0.8368856
4: 4 d 0.4336850 0.8949459 1.45199656 -0.3262636 -0.5158351
5: 5 e 0.9989011 0.4237771 0.04365383 -1.4086310 0.7379102
6: 6 f 0.2640407 -2.0085267 -0.15621784 1.3278945 0.2616385