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

R语言中能否在lapply提取列表元素时直接传入mean函数计算分组均值

你给出的写法lapply(myList, [[, 1, mean)不能实现相同需求,运行后只会返回每个分组的体重列,不会计算得到均值。

原因说明

lapply的语法规则是lapply(X, FUN, ...),...位置传入的所有参数都会直接传递给你指定的函数FUN:
你这里指定的FUN是取子集操作符[[,所以后续传入的1、mean都是给[[的参数,[[只会识别取第1列的要求,额外传入的mean不会生效,也不会触发均值计算,最终效果和lapply(myList, [[, 1)完全一致。

可行的一步实现写法

你可以用匿名函数的方式把取列和求均值的逻辑合并,直接在单次lapply中完成计算:

# 写法1:基础包匿名函数实现
a <- lapply(myList, function(df) mean(df[[1]]))

如果接受用第三方包,purrr的map语法更简洁:

# 写法2:purrr包实现
library(purrr)
a <- map(myList, ~mean(.x[[1]]))

另外针对这个按Diet分组求体重均值的需求,其实不需要先拆分数据集再计算,直接用aggregate函数一步就能得到结果:

# 更高效的原生实现,直接输出分组+均值的结果框
weight_mean <- aggregate(weight ~ Diet, data = ChickWeight, FUN = mean)

内容的提问来源于stack exchange,提问作者Iftikhar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:18:03