R运行independence_test出现differing number of rows报错求助
报错原因分析
该报错的核心原因是公式两侧的变量长度不匹配:
- 公式左侧
CF2260_GPI$CTWF取自CF2260_GPI数据集,仅有538行 - 公式右侧
CF$Worm_Names取自另一个独立的CF数据集,共有1017行
两个变量样本量不一致,无法构建检验所需的对应关系,因此触发行数不匹配的报错。结合你贴出的数据集预览,Worm_Names列和CTWF列属于同一张表,大概率是代码里写错了变量所属的数据集前缀。
解决方法
- 优先确认变量所属数据集:如果
Worm_Names和CTWF都存储在CF2260_GPI中,统一变量所属数据集即可,更规范的写法是直接给函数指定data参数,避免重复写数据集前缀:
CF2260_GPI_ = independence_test(CTWF ~ Worm_Names, data = CF2260_GPI)
- 如果确实需要使用
CF数据集的Worm_Names作为分组因子,先通过样本唯一主键匹配两个数据集,合并为同一张表后删除无匹配的行,保证CTWF和分组因子的样本量一一对应,再执行检验。 - 如果你需要对所有5个因子批量执行permutation anova,可以用循环简化代码,避免重复书写出现拼写错误:
library(coin) # 替换为你实际的5个因子列名 factor_cols <- c("Worm_Names", "Factor2", "Factor3", "Factor4", "Factor5") # 批量运行检验 permanova_results <- lapply(factor_cols, function(f) { test_formula <- as.formula(paste0("CTWF ~ ", f)) return(independence_test(test_formula, data = CF2260_GPI)) })
内容的提问来源于stack exchange,提问作者Lina Kanyavskaya
相关产品推荐
相关产品推荐

