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

在R中用数据框两列计算T检验与P值时遇tibble错误求助

问题根源
  • t.test()函数执行后返回的是一个htest类对象,包含t值、p值、置信区间等多个统计结果,并非单一向量。而tibble要求每一列必须是向量类型,直接将整个htest对象存入T_Test列就会触发报错。
  • 代码中存在两处笔误:管道符应为%>%而非%>;第二个add_column引用的commontestsummary与前文的statsdata不一致,大概率是手误。
解决方案

根据你的需求,可选择以下两种处理方式:

方式1:提取t值存入向量列

直接从t.test返回的对象中提取t.value字段,和提取p值的逻辑一致:

library(tibble)
library(dplyr) # 加载dplyr以使用管道符%>%

# 统一数据框名称,此处假设均为statsdata
statsdata <- statsdata %>%
    add_column(T_Test = t.test(x = statsdata$Result1, y = statsdata$Result,
                               alternative = "two.sided",
                               mu = 0, paired = FALSE, var.equal = TRUE,
                               conf.level = 0.95)$statistic, .after = "Mean_Column") %>%
    add_column(P_val = t.test(x = statsdata$Result1, y = statsdata$Result,
                              alternative = "two.sided",
                              mu = 0, paired = FALSE, var.equal = TRUE,
                              conf.level = 0.95)$p.value, .after = "T_Test")

方式2:保留完整htest对象(列表列)

若需要保留整个t检验的结果对象,可将T_Test定义为列表类型的列(tibble支持列表列):

statsdata <- statsdata %>%
    add_column(T_Test = list(t.test(x = statsdata$Result1, y = statsdata$Result,
                                    alternative = "two.sided",
                                    mu = 0, paired = FALSE, var.equal = TRUE,
                                    conf.level = 0.95)), .after = "Mean_Column") %>%
    add_column(P_val = t.test(x = statsdata$Result1, y = statsdata$Result,
                              alternative = "two.sided",
                              mu = 0, paired = FALSE, var.equal = TRUE,
                              conf.level = 0.95)$p.value, .after = "T_Test")

后续可通过statsdata$T_Test[[1]]访问该htest对象的完整结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:05:31