如何在data.table中修改类型列表(或向量)的变量?

时间:2019-05-07 14:41:45

标签: r data.table

在下面的示例中,我需要为data.table的变量code分配一个列表,以便将值list(11,22)分配给dt$code。我怎么做?

dt <- data.table(1:3)
dt$code <- list()
dt[V1==2, code:=list(11,22)] # does not work
dt[V1==2, code:=.(list(11,22))] # does not work

我的问题比以前的帖子更简单,更简短。 感谢您的回答:

dt[V1==2, code:=list(list((list(11,22)))]   # works !

1 个答案:

答案 0 :(得分:0)

dt[V1==2, code:=list(list(list(11,22)))]  # works !

这也可以写为

dt[V1==2, code:=.(.(.(11,22)))]  

实际上是

的同义词
dt[V1==2, code:=.(.(c(11,22)))]  

但是请注意,在这种情况下,它是一个向量而不是列表,被分配给code的变量V1==2

请注意,尚不可能(到目前为止)执行以下任一操作:

dt[all(code==c(11,22))] 
dt[, ifelse(all(code==c(11,22)), T, F)] 

完全否定了使用向量作为data.table的变量类型的价值。

PS。已添加-根据下面Matt的评论

data.table的新开发版本将使该问题过时。从1.12.3版本开始,可以用任何一种方式编写,包括dt[V1==2, code:=list(11,22)]