This question already has answers here:
Using lists inside data.table columns
(2个答案)
5年前关闭。
我有这个:
我想将
我试过了:
编辑正确的答案:
实际上,您还需要一个列表,因为data.table使用
在
LHS:= RHS形式:
它在RHS上采用 功能形式:
在作业中添加一些注释特别有用。
(2个答案)
5年前关闭。
我有这个:
dt = data.table(index=c(1,2), items=list(c(1,2,3),c(4,5)))
# index items
#1: 1 1,2,3
#2: 2 4,5
我想将
dt[index==2,items]
更改为c(6,7)
。我试过了:
dt[index==2, items] = c(6,7)
dt[index==2, items := c(6,7)]
最佳答案
一种解决方法是使用ifelse
:
dt[,items:=ifelse(index==2,list(c(6,7)),items)]
index items
1: 1 1,2,3
2: 2 6,7
编辑正确的答案:
dt[index==2,items := list(list(c(6,7)))]
实际上,您还需要一个列表,因为data.table使用
list(.)
来查找要通过引用分配给列的值。在
:=
中使用data.table
运算符有两种方法:DT[, c("col1", "col2", ..) := list(val1, val2, ...)]
它在RHS上采用
list()
参数。要添加列表列,您需要包装另一个列表(如上图所示)。 DT[, `:=`(col1 = val1, ## some comments
col2 = val2, ## some more comments
...)]
在作业中添加一些注释特别有用。