R 使用自定义函数返回命名列表的data.table聚合

R 使用自定义函数返回命名列表的data.table聚合,r,data.table,R,Data.table,我有以下数据表: dt = data.table(x = 1:10, y = 11:20) 我想使用一个自定义函数来聚合这两个列,该函数返回一个列表或一个统计向量,如平均值、sd等。所需的输出将是: x y 1: Mean 5.5 15.5 2: SD 3.02765 3.02765 到目前为止,我得到了以下片段: dt[, lapply(.SD, function(x) {list('Mean' = mean(x), '

我有以下数据表:

dt = data.table(x = 1:10, y = 11:20)
我想使用一个自定义函数来聚合这两个列,该函数返回一个列表或一个统计向量,如平均值、sd等。所需的输出将是:

                x       y
1: Mean       5.5    15.5
2: SD     3.02765 3.02765
到目前为止,我得到了以下片段:

dt[, lapply(.SD, function(x) {list('Mean' = mean(x), 'SD' = sd(x))}), .SDcols = c('x','y')]

它生成统计数据,但我也希望行名称与列表中指定的行名称一致。

f另一个选项:
melt(dt)[,(Mean=Mean(value),Sd=Sd(value)),by=variable]
David的答案/注释使用了
sapply
,它将结果简化为矩阵。在他的方法中,当用
lappy
替换
sapply
时,你会得到一个
data.table
,而那些表又没有row.names。太好了,sapply就是好办法@戴维达也可以把它贴出来,嗯?此外,可以简化为
sapply(dt,f)