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

在R中使用apply()对含重复的两组数据逐行执行双样本t检验

解决逐行双样本t检验的问题

我来帮你搞定这个批量处理的需求!你的现有代码里有几个小细节需要调整,咱们直接看修正后的方案:

问题分析

你用apply()的思路完全正确,但有两处语法错误需要修正:

  • 当apply()按行处理时,传入匿名函数的x就是当前行的所有元素,不需要再去引用原数据框R_alltemp[,1:3],直接对x做索引拆分即可
  • 你写的x(R_alltemp[,1:3])是错误的调用方式,正确的元素提取应该用x[1:3]和x[4:6]
  • 另外代码里的R_all3应该是笔误,应该指向你的目标数据框R_alltemp

修正后的代码

# 为数据框添加p值列,逐行执行双样本t检验
R_alltemp$p.value <- apply(R_alltemp, 1, function(x) {
  # 拆分当前行的两组重复数据
  hcc827_samples <- x[1:3]  # 对应R1.HCC827、R2.HCC827、R3.HCC827
  h1975_samples <- x[4:6]   # 对应R1.nci.h1975、R2.nci.h1975、R3.nci.h1975
  # 执行双样本t检验并提取p值
  t.test(hcc827_samples, h1975_samples)$p.value
})

可选参数调整

如果你的数据需要特定的t检验设置,比如假设方差齐性(改用Student's t检验而非Welch检验),或者需要单侧检验,可以直接在t.test()里添加参数:

# 示例:假设方差齐性的双侧检验
t.test(hcc827_samples, h1975_samples, var.equal = TRUE, alternative = "two.sided")$p.value

如果数据里存在缺失值,可以添加na.action = na.omit来自动忽略NA值:

t.test(hcc827_samples, h1975_samples, na.action = na.omit)$p.value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:02