将向量附加到 data.table 作为单独的新列,向量回收单个值

Max*_*nis 2 r data.table

我想向 a 添加一个向量data.table,其中向量元素的每个名称对应于一个新列,并且该值根据向量的元素值重复。

所以给出:

x <- data.table(a=1:2, b=3:4)
v <- c(c=5, d=6)
Run Code Online (Sandbox Code Playgroud)

我正在寻求以下结果:

data.table(a=1:2, b=3:4, c=5, d=6)
#    a b c d
# 1: 1 3 5 6
# 2: 2 4 5 6
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情:

cbind 将向量添加为单列:

cbind(x, v)
#    a b v
# 1: 1 3 5
# 2: 2 4 6
Run Code Online (Sandbox Code Playgroud)

使用将多列添加到 data.table 中的方法,其中列名保存在向量中也会错误地矢量化(水平而不是垂直):

x[, (names(v)) := v]
#    a b c d
# 1: 1 3 5 5
# 2: 2 4 6 6

x[, (names(v)) := list(v)]
# Same as above.
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们也可以在不循环的情况下做到这一点

x[, names(v) := as.list(v)]
x
#   a b c d
#1: 1 3 5 6
#2: 2 4 5 6
Run Code Online (Sandbox Code Playgroud)