使用ggstatsplot包grouped_ggbetweenstats函数报错,求排查与解决方法
解决ggstatsplot::grouped_ggbetweenstats的unique()错误问题
在使用ggstatsplot包的grouped_ggbetweenstats函数时,重复出现以下错误:
Error in unique.default(x, nmax = nmax) : unique() puede ser aplicada solamente a vectores
可复现代码
lapply(c("rstatix", "ggstatsplot", "openintro"), require, character.only = TRUE) print(hsb2) grouped_ggbetweenstats(data = hsb2, x=prog, y= math, grouping.var = gender, results.subtitle=F, messages=F, var.equal=T, p.adjust.method="holm")
错误原因
该错误是ggstatsplot旧版本与rstatix包交互时的已知bug:当指定var.equal=TRUE(要求执行方差齐性的单因素ANOVA)时,函数内部调用rstatix::anova_test时,错误地将数据框而非向量传入unique()函数,而unique()仅支持向量类型输入。
解决方法
优先方案:更新ggstatsplot到最新稳定版
开发团队已经在后续版本中修复了这个参数交互bug,执行以下命令更新包:install.packages("ggstatsplot")更新完成后,直接运行原代码即可正常生成分组的组间统计图形。
临时规避方案(无法更新包时)
如果暂时无法更新包,可以移除var.equal=TRUE参数,改用默认的Welch方差分析(该方法不要求方差齐性,适用于大多数场景):grouped_ggbetweenstats( data = hsb2, x = prog, y = math, grouping.var = gender, results.subtitle = FALSE, messages = FALSE, p.adjust.method = "holm" )若必须使用方差齐性的ANOVA,可以先手动用
rstatix::anova_test完成统计检验,再在grouped_ggbetweenstats中不指定var.equal,手动添加统计结果作为subtitle。
内容的提问来源于stack exchange,提问作者DanielCG
相关产品推荐
相关产品推荐

