我的data.table
看起来像这样:
dt <- data.table(a = 1, b = 1, c = 1)
我需要将列b
视为可变长度的整数向量,因此我可以向其追加其他元素。例如,我想在第一行中将2
添加到列b
。我试过了
dt[a == 1, b := c(b, 2)]
但这不起作用。它给了我一个警告:
Warning message:
In `[.data.table`(dt, a == 1, `:=`(b, c(b, 2))) :
Supplied 2 items to be assigned to 1 items of column 'b' (1 unused)
这个的正确语法是什么?
答案 0 :(得分:3)
dt <- data.table(a = 1, b = 1:3, c = 1)
dt[, b := .(lapply(b, c, 2))][]
# a b c
#1: 1 1,2 1
#2: 1 2,2 1
#3: 1 3,2 1
如果要求首先转换为list
(即,尚未转换为list
,并进行子集化或执行by
),请在上述之前添加dt[, b := .(as.list(b))]
。