我想將矢量添加到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