使用data.table中的“:=”将值分配给子集中的多个列

时间:2018-08-20 14:10:29

标签: r data.table

紧跟this问题,如何使用“:=”符号将值分配给数据表中的多个列?

例如:

x <- data.table(a = 1:3, b = 1:6, c = 11:16) 

我可以用两行代码得到我想要的东西:

x[a>2, b:=NA]
x[a>2, c:=NA]

但希望能够做到这一点,就像这样:

x[a>2, .(b:=NA, c:=NA)]

但是不幸的是,这不起作用。还有另一种方法吗?

1 个答案:

答案 0 :(得分:2)

我们可以将:=与#p

x[a >2, `:=`(b = NA, c = NA)]

如果有很多列,则另一个选择是set

for(nm in names(x)[-1]) set(x,  i=which(x[["a"]]>2), j=nm, value = NA)
相关问题