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

时间:2017-04-19 16:03:32

标签: r data.table

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

所以给出:

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

我正在寻找结果:

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

我尝试的事情:

cbind将矢量添加为单列:

cbind(x, v)
#    a b v
# 1: 1 3 5
# 2: 2 4 6

使用Adding multiple columns to a data.table, where column names are held in a vector的方法也会错误地(水平而不是垂直)矢量化:

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.

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

循环工作:

for (i in seq_along(v)) x[, (names(v)[i]) := v[i]]

结果:

x
#    a b c d
# 1: 1 3 5 6
# 2: 2 4 5 6