dplyr管道中调用rstatix的shapiro_test提示variable不存在报错如何解决
报错原因
你当前使用的rstatix包版本存在已知bug,shapiro_test()函数处理自定义列名的分组长表时,会硬编码查找名为variable的分组标识列。你用pivot_longer转换长表时,将原本默认的variable列自定义命名为了s,因此函数找不到所需列触发报错。
解决方案
有两种可行方案,你可以按需选择:
- 方案1:适配旧版本rstatix的规则,转长表时保留默认列名,后续有需要再重命名
library(rstatix) normality_table <- df %>% # 省略names_to参数,转长后分组标识列默认名为variable tidyr::pivot_longer(., -c(A, C, D)) %>% group_by(D, variable) %>% shapiro_test(value) %>% # 若需要保留s作为列名,检验完成后重命名即可 rename(s = variable) - 方案2:升级rstatix到最新正式版,新版本已经修复了该硬编码问题,你原本的代码无需修改即可正常运行。
内容的提问来源于stack exchange,提问作者12666727b9
相关产品推荐
相关产品推荐

