根据不同的组向data.table添加多个列

时间:2017-02-10 19:35:54

标签: r data.table

与之前的question类似,我想通过一个函数调用向data.table添加多个列。但是,我的函数并不只是返回一个数字,如mean(),而是整个向量,如scale()或cat()。有谁知道怎么做?

以下工作没有问题:

library(data.table)
x <- data.table(a=1:3,b=1:6) 
f <- function(b) {
  d = mean(b) * 2
  list("hi", "hello",d)
} 
x[,c("col1","col2","col3"):=f(b), by=a][]

但是当我用我的函数替换平均值时,例如scale(),我得到一个错误和一个友好的建议,但我不知道该怎么做:

x <- data.table(a=1:3,b=1:6) 
f <- function(b) {
  d = scale(b) * 2
  list("hi", "hello",d)
} 
x[,c("col1","col2","col3"):=f(b), by=a][]
  

`[.data.table`(x, , `:=`(c("col1", "col2", "col3"), f(b)), by = a)中的错误:

     

j = list(...)中的所有项目都应该是原子矢量或列表。如果你正在尝试类似j = list(.SD,newcol = mean(colA))的东西,那么使用:= by group(更快),或者cbind或者之后合并。

0 个答案:

没有答案