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

如何按列执行单样本t检验并自定义总体均值μ?循环代码返回NULL的问题排查

问题分析与解决方案

你的循环代码里的核心问题是列表初始化的位置不对——你把h=list()放在了for循环的内部,这意味着每一次循环都会把h重置成一个空列表!

举个例子:

  • 当i=1时,你创建了空列表h,然后给h[[1]]赋值;
  • 当i=2时,你又重新创建了空列表h,之前h[[1]]的内容直接被清空,然后给h[[2]]赋值,这时候h[[1]]就变成了NULL;
  • 到i=3时,同样的操作再次发生,最终只有h[[3]]保留了结果,前两个位置都是空的。

修复后的循环代码

把列表的初始化放在循环外面,就可以避免每次清空之前的结果:

# 先初始化一个空列表,放在循环外部
h <- list()

for (i in 1:ncol(tab)) {
  h[[i]] <- t.test(tab[,i], mu=0.9)
}

# 现在查看结果
h
h[[1]] # 正常返回第一列的t检验结果
h[[2]] # 正常返回第二列的t检验结果

更简洁的替代方案:用apply结合匿名函数

其实你完全不用写循环,只需要在apply里传入一个匿名函数,就能指定自定义的μ值:

k <- apply(tab, 2, function(x) t.test(x, mu=0.9))
k

这样一行代码就能得到所有列的t检验结果,和修复后的循环效果完全一致,但代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:02:45