【发布时间】:2020-09-10 19:10:19
【问题描述】:
我想做以下事情:
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)]
我想做我在#METHOD 2 中所做的事情,但是使用变量TestPlusOne,即我想在定义名称的变量var 中传递一个列名。在第一个#METHOD 1 中,实际数据表发生了变化,但这是我想防止的副作用。
是否可以更改#METHOD 2 使得列名由var 中的字符串给出?
补充信息:我确实不想在dt中添加另一列,也不想深拷贝对象dt来实现它,因为它似乎相当低效。我想在#METHOD 2 做。但我似乎无法确定如何做到这一点。
【问题讨论】:
-
这已经可以了,对吧?
dt[, (var) := Test + 1]你在找什么? -
或者您想同时更改数据和列名吗?我建议使用
setnames通过引用更改列名。 -
是的,这已经可以了,但问题是分配
:=改变了dt。所以对象 dt 被改变了,我不想这样。
标签: r data.table