group_by场景下使用aov时提示找不到'Error'函数的问题咨询
问题原因
你遇到的报错本质是Error()属于aov()函数公式语法的专属特殊标识,不是全局环境下可独立调用的普通函数,触发报错的直接原因是你在do()内写的aov()调用不符合语法规范:
- 单独运行
aov()时你指定了data = DTI.TRACTlong参数,aov()会在传入的数据集环境下解析公式,此时Error()会被识别为重复测量方差分析的误差项声明语法,不会被当成普通函数处理。 - 分组运行时你使用
.$变量名的方式直接提取向量传入公式,没有给aov()传入data参数,此时R会把公式里的Error(.$PartID)识别为「调用名为Error的函数处理.$PartID向量」,但全局环境下根本不存在这个独立函数,自然就抛出找不到函数的报错。
解决方法
修正do()内的aov()写法,将当前分组的数据集子集直接传给data参数,公式里直接写变量名即可,不需要用.$提取:
DTI.TRACTlong %>% group_by(harmonize, ROI) %>% do(tidy(aov(FA ~ GOBS_Gender * study + Error(PartID), data = .)))
上面代码里的.在do()语境下就代表每个harmonize+ROI分组对应的数据集子集,aov()拿到data参数后就会在子集环境下正确识别Error()的语法含义。
内容的提问来源于stack exchange,提问作者Amanda Rodrigue
相关产品推荐
相关产品推荐

