2014-02-17 88 views
2

我试着这样做:如何将多个功能适用于data.table R中

DT <- data.table(Monthname = month.name, id = 1:3, a = abs(rnorm(12)), b = abs(rnorm(12)), c = abs(rnorm(12)), d = abs(rnorm(12))) 
setkey(DT, id) 
ANS <- DT[,lapply(.SD, mean)/lapply(.SD, sd), by = 'id', .SDcols = names(DT)[-1]] 

,但它给错误。那么,有没有办法做到这一点?谢谢。

+0

到下面的答案另一种方法是定义像'myfun <函数 - 函数(x)的平均值(X)/ SD(X )'然后使用'DT [,lapply(.SD,myfun),by =“id”,.SDcols = names(DT)[ - 1]]''。 – A5C1D2H2I1M1N2O1R2T1

回答

2

只是,相同人会在其他情况下使用lapply

ANS <- DT[,lapply(.SD, function(x) mean(x)/sd(x)), by = 'id', .SDcols = names(DT)[-1]] 
+0

它工作得很好。谢谢 – Phongsakorn