R 在data.table中指定变量列名

R 在data.table中指定变量列名,r,data.table,R,Data.table,我想做以下工作: library(data.table) dt <- data.table(Test = c(1:100)) var <- "TestPlusOne" #METHOD 1 dt[, (var) := Test + 1][, c("TestPlusOne")] #METHOD 2 dt[, .(TestPlusOne = Test + 1)] 库(data.table) dt一种方法是使用setNames(): 也可以使用这

我想做以下工作:

library(data.table)
dt <- data.table(Test = c(1:100))
var <- "TestPlusOne"

#METHOD 1
dt[, (var) := Test + 1][, c("TestPlusOne")]

#METHOD 2
dt[, .(TestPlusOne = Test + 1)]
库(data.table)

dt一种方法是使用
setNames()

也可以使用这种子集+链接黑客,尽管它可能无法达到目的

dt[TRUE][, (var) := Test + 1][, "TestPlusOne"]
# or as nicola suggests
copy(dt)[, (var) := Test + 1][, "TestPlusOne"] 
可能性

setnames(data.table(dt$Test + 1), var)[]
这导致了

dt[, setnames(data.table(Test + 1), var)]

这已经起作用了,对吗
dt[,(var):=Test+1]
您在寻找什么?还是要同时更改数据和列名?我建议使用
setnames
通过引用来更改列名。是的,这已经起作用了,但问题是,赋值
:=
会更改
dt
。所以对象dt被改变了,我不希望这样。我建议使用更干净(可能更有效)的
copy(dt)
来代替
dt[TRUE]
dt[, setnames(data.table(Test + 1), var)]