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

时间:2015-09-19 08:24:33

标签: r data.table

我想在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中定义的列?

1 个答案:

答案 0 :(得分:8)

为了完成这项工作,您必须将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 <-,因为数据表已通过引用进行更新,因为使用了:=运算符。