在下面的示例中,我需要为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 !
答案 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)]
。