我想在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
中定义的列?
答案 0 :(得分:8)
为了完成这项工作,您必须将a
包裹在()
中,如下所示:
x[, (a) := f()]
这导致以下数据表:
> x a b col1 col2 col3 1: 1 1 0 0 0
说明:当您使用x[, a:=f()]
时,您将f()
的结果分配到列a
(data.table
允许这样做以方便起见)。因此a
在此时被视为名称。当您使用(a)
时,a
被视为表达式(在本例中是列名称的向量)。
此外:您无需再次使用x
将此内容分配给x <-
,因为数据表已通过引用进行更新,因为使用了:=
运算符。