在R中运行ANOVA事后成对t检验时报错该如何解决?
问题原因
- 你将
pairwise.t.test()需要的两个入参拼接为了字符串传入,print.noquote()返回的仍然是文本格式,不是函数可识别的数值/因子向量,导致函数无法读取到分组参数g - 参数顺序颠倒:
pairwise.t.test(x, g)的第一个入参x是因变量(测试得分)的数值向量,第二个入参g是分组因子,你原来的拼接逻辑把自变量(分组)放在了前面,就算参数能识别结果也不符合预期 - 拼接的参数语句缺少分隔符,即便用解析执行的方式也会触发语法错误
解决方法
直接遍历校正后留存的IV-DV组合数据框,通过列名提取对应数据向量传入检验函数即可,参考代码如下:
# 模拟数据(你原有代码不变) df = data.frame(ID = c(1001, 1002, 1003, 1004, 1005, 1006,1007, 1008, 1009, 1010, 1011), Group = as.numeric(c('0','1','2','0','2','1','0','2','0','1','0')), testscore_1 = as.numeric(c('23','28','30','15','7','18','29','27','14','22','24')), testscore_2 = as.numeric(c('1','3','2','5','8','2','5','6','7','8','2')), testscore_3 = as.numeric(c('18','20','19','15','20','23','19','25','10','14','12'))) df_results = data.frame(Independent_variable = c("Group", "Group"), Dependent_variable=c("testscore_1", "testscore_2")) # 修正后代码 ## 先将分组变量转为因子,符合检验函数的输入要求 df$Group <- as.factor(df$Group) ## 遍历组合运行事后检验 posthoc_t_test_results <- lapply(1:nrow(df_results), function(i) { cur_dv <- df_results$Dependent_variable[i] cur_iv <- df_results$Independent_variable[i] pairwise.t.test(x = df[[cur_dv]], g = df[[cur_iv]], p.adjust.method = "none") }) ## 给结果命名方便后续查询 names(posthoc_t_test_results) <- paste(df_results$Independent_variable, df_results$Dependent_variable, sep = " vs ")
运行完成后可通过名称直接调取对应检验结果,比如posthoc_t_test_results[["Group vs testscore_1"]]即可查看分组对testscore_1的两两t检验结果。
内容的提问来源于stack exchange,提问作者M_Oxford
相关产品推荐
相关产品推荐

