【问题标题】:Join in place multiple columns data.table就地加入多列data.table
【发布时间】:2022-06-28 13:11:28
【问题描述】:

我需要使用 data.table 将超过 20 列连接到位,并且我不能使用以下 link 中的语法,因为这意味着要多次写入列的名称。我可以提供一个例子,我必须加入 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() 吗?

标签: r data.table


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2019-02-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多