有人无法执行以下操作有特定原因吗?
v <- data.table( A = 1:2, B = vector("list", 2) )
# A B
# 1: 1
# 2: 2
v[ A == 1, B := list( identity ) ]
# RHS of assignment is not NULL, not an an atomic vector (see ?is.atomic) and not a list column.
请注意,B
是一个列表列。另一方面,可能会发生以下情况(尽管会发出警告):
v[ A == 1, B := list(2) ]
答案 0 :(得分:1)
我们可以将函数包装在list
中,因为它是函数
v[A == 1, B := list(list(identity))]
v
# A B
#1: 1 <function>
#2: 2
答案 1 :(得分:1)
分配给列表列时,data.table
中的经验法则是“您总是比预期多需要list()
”
v[ A == 1, B := list(list(identity)) ]
做您想要的。您的示例使用整数值的原因是,在这种情况下,data.table
自动将2
强制转换为list(2)
(但如您所述,带有警告)。