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

R语言使用循环执行Grubbs' test无输出问题求助

问题原因
  • R 默认不会自动打印循环内部的函数返回值:只有直接在控制台/脚本顶层运行grubbs.test()时,才会自动触发打印逻辑,放在 for/while 循环内部的调用只会计算结果,不会主动输出到控制台或者 R Markdown 的渲染结果里。
  • R Markdown 的代码块输出逻辑也遵循该规则,循环内的对象必须显式调用print()才会被捕获作为输出内容。
解决方法

你只需要给循环内的grubbs.test()调用套上print()函数即可,修改后的 for 循环示例如下:

library(outliers) # 先加载 grubbs.test 所在的 outliers 包
data(heptathlon) # 加载对应数据集

for (i in 1:ncol(heptathlon)) {
  # 显式打印检验结果
  print(grubbs.test(heptathlon[ ,i], type = 10, opposite = FALSE, two.sided = FALSE))
  # 可选:添加分割标识方便区分不同列的结果
  cat("--- 第",i,"列检验结束 ---\n")
}

如果需要把结果存下来后续分析,也可以用列表存储所有检验结果:

# 初始化结果列表,列名对应为数据框的字段名
grubbs_res <- vector("list", ncol(heptathlon))
names(grubbs_res) <- colnames(heptathlon)

for (i in 1:ncol(heptathlon)) {
  grubbs_res[[i]] <- grubbs.test(heptathlon[ ,i], type = 10, opposite = FALSE, two.sided = FALSE)
}

# 后续需要查看某一列的结果直接调用即可,比如查看 hurdles 列的检验结果
print(grubbs_res[["hurdles"]])

也可以用更符合 R 语言风格的 lapply 实现批量计算,写法更简洁:

grubbs_res <- lapply(heptathlon, function(col) {
  grubbs.test(col, type = 10, opposite = FALSE, two.sided = FALSE)
})
# 打印所有列的检验结果
print(grubbs_res)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:30:00