在 R 中创建新变量并保存在数据 table 中的新对象中

Creating new variable and save in new object in data table in R

这可能是一个非常初级的问题。我想在现有的 data.table 对象中创建一个新变量,并想用不同的名称保存新对象。但是,我遇到了一个问题:

library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)

a <- colnames(DT)[-1] #variables to be modified
a.va <- paste(a, "x", sep = "_") #new variables name

DT2 <- DT[, (a.va) := lapply(.SD, FUN = function(x) (sum(x, na.rm = T)-x) / (.N - 1)), .SDcols = a, by = x]

但是,它也会更改两个现有对象 DT。我想保持原始对象 DT 完好无损。在我的原始数据集中,有100多个变量,所以我无法一一创建单独的变量。

:= 将在添加新列时更改当前对象,就像它通过引用所做的那样。如果我们想要一个新对象,使用copy从'DT'创建一个新对象,然后对复制的对象

进行赋值:=
DT2 <- copy(DT)
DT2[, (a.va) := lapply(.SD, FUN = function(x) (sum(x, na.rm = T)-x) / (.N - 1)), .SDcols = a, by = x]

-正在检查

> names(DT2)
[1] "x"   "y"   "v"   "y_x" "v_x"
> names(DT)
[1] "x" "y" "v"