You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中apply函数FUN参数能否传入多个函数计算数据框列的均值、中位数和标准差

首先你当前的写法存在两处错误:

  1. apply的FUN参数仅支持传入单个函数,不能直接传入c(mean, median, sd)这种函数向量
  2. MARGIN参数用于指定运算维度,1为按行计算、2为按列计算,不能传入mtcars[i]这种数据子集,目标列筛选需要放在X参数位置

推荐实现方案(输出直接为列表格式,符合你的需求)

用lapply实现适配性更好,不会出现apply自动把数据框转成矩阵导致的类型异常问题,示例代码如下:

data(mtcars)
# 填入你要计算的目标列索引,示例选mpg、disp、hp三列
i <- c(1, 3, 4)
# 自定义统计函数,一次性计算三个指标,增加na.rm参数兼容含缺失值的场景
calc_stats <- function(x) {
  c(
    mean = mean(x, na.rm = TRUE),
    median = median(x, na.rm = TRUE),
    sd = sd(x, na.rm = TRUE)
  )
}
# 对指定列应用统计函数,直接返回列表结果
res <- lapply(mtcars[i], FUN = calc_stats)
# 输出结果
res

运行后输出效果和你预期一致:

$mpg
   mean  median      sd 
20.09062 19.20000  6.02695 

如果必须使用apply函数,可按以下写法调整,最终转成列表格式即可:

res_apply <- apply(mtcars[i], MARGIN = 2, FUN = calc_stats)
res <- as.list(data.frame(t(res_apply)))

内容的提问来源于stack exchange,提问作者Helan.ge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:06:03