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

R语言使用lapply配合aov()无p值F值仅返回Class、Mode的问题咨询

问题原因

你遇到的现象和lapply适配性无关,问题出在两处:

  1. 你直接对aov对象构成的列表执行summary(),R默认会输出列表本身的结构信息,不会自动遍历列表内的每个aov对象执行对应统计汇总方法。而你之前用kruskal.test时大概率是在批量生成结果后直接提取了属性值,没有对整个列表跑summary才没暴露这个问题。
  2. 你写的第三个自定义函数tree有语法错误,调用aov时没有传入data参数,模型无法定位Height和Person变量。

正确实现代码

基础R写法

# 批量生成每个数据框的aov模型
mut <- lapply(df_list, function(x) aov(Height ~ Person, data = x))
# 对每个aov模型单独执行summary
mut_summary <- lapply(mut, summary)
# 输出所有结果
mut_summary

# 如需批量提取p值可以用下面的代码
lapply(mut_summary, function(res) res[[1]][["Pr(>F)"]][1])

purrr写法

library(purrr)
# 批量生成模型+汇总
cow_summary <- map(df_list, ~ aov(Height ~ Person, data = .x)) %>% 
  map(summary)
# 查看结果
cow_summary

补充说明

你提供的示例数据中,每个Person对应的Height是完全重复的,组内方差为0,跑出来的p值会极小,换成你的真实业务数据即可得到正常的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:27:01