我想将矢量添加到data.table
,矢量元素的每个名称都对应一个新列,并且基于vector的重复值元素值。将vector添加为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.
啊,'as.list'而不是'list',谢谢。为什么在名字(v)'旁边不需要parens?它也适用于它们。 –
@MaxGhenis使用parens可能会更好,因为它更通用,即'cols < - names(v); x [,(cols):= as.list(v)] 1 – akrun
@Max真的,'v'应该从一开始就用'v = list(c = ...)'指定。表行是(有序的)元组而不是向量。 – Frank