You need to enable JavaScript to run this app. R语言table1包生成表格p值列时代码及官方示例失效问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

R语言table1包生成表格p值列时代码及官方示例失效问题咨询

问题解决方案

根因说明

你运行官方示例无法生成p值列,是因为你安装的table1包为1.4.0及以上新版本,该版本已废弃旧版文档中使用的extra.col参数,导致原有代码逻辑失效。

两种可选修复方案

方案1:适配新版本代码(推荐)

无需变动包版本,仅需调整table1函数的参数写法,原有p值计算函数可保留不变,完整可运行代码如下:

library(table1)
library(MatchIt) 
data(lalonde)

lalonde$treat    <- factor(lalonde$treat, levels=c(0, 1), labels=c("Control", "Treatment"))
lalonde$married  <- as.logical(lalonde$married == 1)
lalonde$nodegree <- as.logical(lalonde$nodegree == 1)
lalonde$race     <- factor(lalonde$race, levels=c("white", "black", "hispan"),
                           labels=c("White", "Black", "Hispanic"))

pvalue <- function(x, ...) {
  y <- unlist(x)
  g <- factor(rep(1:length(x), times=sapply(x, length)))
  if (is.numeric(y)) {
    p <- t.test(y ~ g)$p.value
  } else {
    p <- chisq.test(table(y, g))$p.value
  }
  c("", sub("<", "&lt;", format.pval(p, digits=3, eps=0.001)))
}

# 仅调整此处table1的参数写法即可
table1(~ age + race + married + nodegree + re74 + re75 + re78 | treat,
       data=lalonde, 
       overall=F,
       render = render.default(
         extra.col = list(`P-value` = pvalue)
       ))

方案2:降级包版本适配旧代码

如果你希望直接运行官方旧示例的原始代码,可将table1包降级到1.3版本,执行以下代码后重启R会话,再运行你原有代码即可正常生成p值列:

# 未安装remotes包先执行 install.packages("remotes")
remotes::install_version("table1", version = "1.3")

补充优化提示

如果生成的表格中p值显示为&lt;0.001而非<0.001,可将pvalue函数中的&lt;替换为<适配纯文本输出;如果分类变量存在期望频数小于5的情况,可将卡方检验替换为Fisher精确检验避免警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:24:06