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

使用公式形式调用wilcox.test并设置paired=TRUE时报错问题

R中wilcox.test公式方法使用paired = TRUE报错的原因与解决办法

我有几段曾正常运行的代码片段,如今却报错。为验证并非误记,我搜索了模板示例,例如STHDA网站上的代码:

before <-c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7)
after <-c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2)
my_data <- data.frame( 
                group = rep(c("before", "after"), each = 10),
                weight = c(before,  after)
                )

# 此调用正常运行:
wilcox.test(before, after, paired = TRUE)

# 此调用也正常:
wilcox.test(weight ~ group, data = my_data)

# 但此调用报错:
wilcox.test(weight ~ group, data = my_data, paired = TRUE)

报错信息:

Error in wilcox.test.formula(weight ~ group, data = my_data, paired = TRUE) : 
  cannot use 'paired' in formula method

我使用的是最新版R(4.4.0),通过CLI运行。目前无法测试旧版本,但找到大量同类教程,故确认并非误记。请问问题出在哪里?


问题原因与解决办法

  • 核心原因:wilcox.test的公式方法(对应底层函数wilcox.test.formula)从设计上就不支持paired参数,这个限制并非R 4.4.0新增,而是该方法的固有规则。公式方法默认用于独立样本的两组比较,无法通过公式结构传递样本的配对关系,因此禁用了该参数。
  • 关于教程中的矛盾写法:部分早期教程可能存在示例疏漏,或是作者混淆了向量输入与公式输入的参数规则,导致出现不符合函数设计的写法。
  • 解决办法:
    1. 继续使用向量输入的配对检验写法:wilcox.test(before, after, paired = TRUE),这是配对Wilcoxon检验的标准调用方式,能准确传递配对样本的对应关系。
    2. 若坚持使用数据框,可先将数据转换为宽格式(每个样本的before和after作为两列),再用向量调用;或使用专门处理配对设计的函数逻辑,避免在公式方法中强行添加paired参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:30:07