R 使用.SD对data.table中的多个变量应用函数时,分配新变量

R 使用.SD对data.table中的多个变量应用函数时,分配新变量,r,data.table,R,Data.table,我了解如何使用.SD在多个列上执行操作;我只是不知道如何将这些新值分配给数据表中的新变量(而不是覆盖输入变量) 在本例中,我创建了三个以字符串“newvars”结尾的新变量。然后我将这些新变量合并回数据表。是否可以只创建新的变量而不合并 mtcars <- data.table( mtcars ) newvars <- mtcars[ , lapply( .SD , function( Z ) Z * mtcars[[ "wt" ]]) , .SDcols= c("hp","d

我了解如何使用.SD在多个列上执行操作;我只是不知道如何将这些新值分配给数据表中的新变量(而不是覆盖输入变量)

在本例中,我创建了三个以字符串“newvars”结尾的新变量。然后我将这些新变量合并回数据表。是否可以只创建新的变量而不合并

mtcars <- data.table( mtcars )  
newvars <- mtcars[ , lapply( .SD , function( Z ) Z * mtcars[[  "wt" ]]) , .SDcols= c("hp","drat","gear")]   
colnames(   newvars ) <- paste( colnames( newvars) , "newvars", sep="_")
mtcars <- cbind( mtcars , newvars )

谢谢。

IIUC,您正在添加新列。惯用的方法是如下使用
:=
,将列名的新字符向量放在
()
前面的括号中

library(data.table)
mtc <- data.table(mtcars)
cols <- c("hp", "drat", "gear")
mtc[, (paste0(cols, "_newvars")) := lapply(.SD, `*`, wt), .SDcols=cols]
mtc
库(data.table)

mtc等等,在这种方法中,我在哪里分配“新变量”?谢谢!谢谢你给我关于j
library(data.table)
mtc <- data.table(mtcars)
cols <- c("hp", "drat", "gear")
mtc[, (paste0(cols, "_newvars")) := lapply(.SD, `*`, wt), .SDcols=cols]
mtc