在没有名字的`:=`中在data.table中创建多列

时间:2019-03-18 18:26:58

标签: r data.table

如果没有使用列名就可以使用以下data.table功能,我正在徘徊:

dt <- data.table(mtcars)[,.(mpg, cyl)]
dt[,`:=`(avg=mean(mpg), med=median(mpg))]

例如,假设我有一个函数可以返回多个这样的列

mfun=function(x){cbind(x^2,x^3)}

但是,如果我想以特定方式将其分配为新列,R会执行两次mfun函数,效率不高。

dt[,`:=`(sqr=mfunc(mpg)[,1], cub=mfunc(mpg)[,2])]

因此,如果没有“解决方法”,是否可以执行类似以下操作:

dt[,`:=`(mfunc(mpg))] #this returns an error
dt[,`:=`(error2=mfunc(mpg))] #this returns an error

0 个答案:

没有答案