将多个列添加到 data.table,其中列名保存在向量中

Adding multiple columns to a data.table, where column names are held in a vector

我想在 R 中向 data.table 添加大量列。 列名保存在向量 a 中。怎么做?

x <- data.table(a=1,b=1)
f <- function(x) {list(0)}

以下作品:

x <- x[, c("col1","col2","col3") := f()]

但以下不是:

a <- c("col1","col2","col3")
x <- x[, a := f()]

如何添加在 a 中定义的列?

为了完成这项工作,您必须像这样将 a 包裹在 () 中:

x[, (a) := f()]

这将产生以下数据表:

> x
   a b col1 col2 col3
1: 1 1    0    0    0

说明:当您使用 x[, a:=f()] 时,您将 f() 的结果分配给列 adata.table 允许这样做是为了方便)。因此 a 在这种情况下被视为名称。当您使用 (a) 时,a 被视为表达式(在本例中为列名向量)。

此外:您不需要使用 x <- 再次将其分配给 x,因为数据表是通过引用更新的,因为使用了 := 运算符。