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

R语言使用for循环生成t检验均值差向量的实现方法

问题原因

你当前的代码在每次循环迭代时都会直接覆盖m对象,所以循环结束后m只会保留最后一个分组的计算结果。同时代码中重复调用了两次t.test计算同一个分组的结果,属于不必要的冗余计算。

修正后的for循环实现
set.seed(1)
e <- data.frame(tti = log2(runif(200)),
                corona = c(rep("Corona", 100), rep("Before", 100)),
                type = rep(c("A", "B", "C", "D")))

# 初始化空向量存储结果,同时保留分组名方便后续核对
m <- c()

for(i in unique(e$type)){
  # 单次计算t检验结果,避免重复运算
  t_result <- t.test(e$tti[e$type == i] ~ e$corona[e$type == i])
  # 计算差值并追加到结果向量
  m[i] <- round(1 - 2^(t_result$estimate[2] - t_result$estimate[1]), digits = 3) * 100
}

运行后输出m即可得到所有分组的计算结果:

> m
   A    B    C    D 
24.7 10.5  1.5 28.7 
可选的非循环实现(适合更复杂的分组统计场景)

如果后续需要扩展统计维度,可以用dplyr的分组语法实现,代码可读性更高:

library(dplyr)
e %>%
  group_by(type) %>%
  summarise(diff = round(1 - 2^(mean(tti[corona == "Before"]) - mean(tti[corona == "Corona"])), 3)*100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:05