将多个列添加到 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()
的结果分配给列 a
(data.table
允许这样做是为了方便)。因此 a
在这种情况下被视为名称。当您使用 (a)
时,a
被视为表达式(在本例中为列名向量)。
此外:您不需要使用 x <-
再次将其分配给 x
,因为数据表是通过引用更新的,因为使用了 :=
运算符。
我想在 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()
的结果分配给列 a
(data.table
允许这样做是为了方便)。因此 a
在这种情况下被视为名称。当您使用 (a)
时,a
被视为表达式(在本例中为列名向量)。
此外:您不需要使用 x <-
再次将其分配给 x
,因为数据表是通过引用更新的,因为使用了 :=
运算符。