我试图将多个函数应用于data.table的多个列.例子:

DT <- data.table("a"=1:5,
                 "b"=2:6,
                 "c"=3:7)

我想得到a列的中位数.

stats <- DT[,.(mean_a=mean(a),
               median_a=median(a),
               mean_b=mean(b),
               median_b=median(b))]

但它太重复了.使用.SDcolslapply是否有一个很好的方法来实现类似的结果?

推荐答案

我通常会这样做:

my.summary = function(x) list(mean = mean(x), median = median(x))

DT[, unlist(lapply(.SD, my.summary)), .SDcols = c('a', 'b')]
#a.mean a.median   b.mean b.median 
#     3        3        4        4 

R相关问答推荐

用apply/map/etch替换循环以加快速度

rvest函数read_html_live()不允许html_elements()正确读取

图片中令人惊讶的行为

根据shiny 应用程序中的数字输入更改图标 colored颜色

使用tidyverse方法绑定行并从一组管道列表执行左连接

任意列的欧几里得距离

过滤器数据.基于两列的帧行和R中的外部向量

用值序列对行进行子集化,并标识序列开始的列

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

合并DFS列表并将索引提取为新列

可以替代与NSE一起使用的‘any_of()’吗?

如何读取CSV的特定列时,给定标题作为向量

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

try 将 colored颜色 编码添加到ggploly的标题中

如何将网站图像添加到带有极坐标的面包裹条形图?

将箭头绘制在图形外部,而不是图形内部

在另一个包中设置断点&S R函数

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

有没有可能用shiny 的书签恢复手风琴面板?

仅当后续值与特定值匹配时,才在列中回填Nas