【发布时间】:2015-04-27 21:56:47
【问题描述】:
将具有多个输出变量(例如列表)的函数应用于 data.table 的子集时,我会丢失变量名称。有没有办法留住他们?
library(data.table)
foo <- function(x){
list(mn = mean(x), sd = sd(x))
}
bar <- data.table(x=1:8, y=c("d","e","f","g"))
# column names "mn" and "sd" are replaced by "V1" and "V2"
bar[, sapply(.SD, foo), by = y, .SDcols="x"]
# column names "mn" and "sd" are retained
bar_split <- split(bar$x, bar$y)
t(sapply(bar_split, foo))
【问题讨论】:
-
bar[,c("mn","sd"):=sapply(.SD,foo),.(y),.SDcols="x"]怎么样 -
好问题。我有兴趣为返回不仅仅是标量列表的函数执行此操作,例如
foo2 <- function(x) list(mn=mean(x),tab=table(x))。
标签: r data.table