R语言重复测量ANOVA报错:Must subset columns with a valid subscript vector
解决rstatix::anova_test重复测量ANOVA的报错问题
这个报错的核心问题出在你给anova_test的within参数传值的方式上——你直接传入了my.data$A和my.data$B(也就是列的实际数据),但这个参数需要的是数据框中被试内变量的列名字符串,而不是向量本身。
具体问题拆解
当你写within = c(my.data$A, my.data$B)时,rstatix会试图把这两个向量当成列下标来用,而你的A/B变量如果是带小数的数值(或者即便是整数,但被识别为double类型),就会触发“无法从double转换为integer且丢失精度”的错误——这和你把因子转数值没关系,因为根源是参数传递的逻辑错了。
正确的解决步骤
- 先确认被试内变量是因子类型:因为A(Yes/No)和B(Low/High)都是分类变量,必须转为因子才能正确做重复测量ANOVA:
# 将A和B转为因子 my.data$A <- factor(my.data$A) my.data$B <- factor(my.data$B)
- 修正anova_test的调用方式:
within参数传入列名的字符串向量,dv和wid参数同样直接写列名(不用my.data$前缀,因为已经指定了data = my.data):
library(rstatix) # 正确调用anova_test res.aov <- anova_test( data = my.data, dv = Score, # 直接写因变量列名 wid = id, # 直接写被试ID列名 within = c(A, B) # 直接写被试内变量列名 ) # 查看结果 get_anova_table(res.aov)
这样应该就能正常运行了,本质上是rstatix的函数设计要求我们用基于指定data参数的列名引用,而不是直接传递列向量。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

