R会话频繁崩溃求助:MacOS环境下运行绘图代码异常
解决R会话频繁崩溃(R Session Aborted)的方案
环境信息
- MacOS Sonoma 14.5
- R 4.4.0
- RStudio 2024.04.0+735
- 已重装R和RStudio,单独R控制台可正常使用,仅运行特定绘图代码时崩溃
排查与解决步骤
1. 检查并更新包版本兼容性
R 4.4.0为较新版本,部分第三方包可能存在适配问题:
- 先查看当前所用包的版本:
packageVersion("openxlsx") packageVersion("ggplot2") packageVersion("ggsci") packageVersion("gridExtra") packageVersion("ggpubr") - 更新所有包至最新版:
update.packages(ask = FALSE) - 若更新后仍崩溃,尝试降级
ggpubr至稳定版(如0.6.0),因stat_compare_means是该包函数,可能与R 4.4.0存在兼容性冲突:remove.packages("ggpubr") install.packages("https://cran.r-project.org/src/contrib/Archive/ggpubr/ggpubr_0.6.0.tar.gz", repos = NULL, type = "source")
2. 简化代码定位崩溃点
逐步拆分代码,确认具体哪部分导致崩溃:
- 先验证数据读取与子集化是否正常:
library(openxlsx) s <- read.xlsx("PPCPs sum.xlsx", "sources total", colNames = TRUE) s_sub <- subset(s, s$Type == "Water" & s$Seasons == "Winter" & s$Chem == "IBU") # 检查数据结构和内容 str(s_sub) head(s_sub) - 单独运行
ggboxplot,排除绘图基础逻辑问题:library(ggplot2) library(ggsci) library(ggpubr) p <- ggboxplot(s_sub, x = "Sources", y = "Conc", color = "Sources", palette = "jco", add = "jitter") print(p) - 若上述步骤正常,再单独添加
stat_compare_means,确认是否为该函数触发崩溃:p + stat_compare_means(aes(group = Sources), method = "kruskal.test", label = "p.signif")
3. 调整RStudio图形设备设置
MacOS Sonoma与RStudio默认图形设备可能存在冲突:
- 打开RStudio设置:
Tools > Global Options > General > Graphics,将Backend从"AGG"切换为"Quartz",重启RStudio后重试。 - 或在代码开头手动指定图形设备:
quartz() # 后续运行绘图代码
4. 排查系统级问题
- 检查系统权限:进入
系统设置 > 隐私与安全性 > 完全磁盘访问权限,确保RStudio和R均已被授予权限。 - 释放系统内存:关闭其他占用大量内存的应用,避免因内存不足导致R会话崩溃。可通过终端
top命令查看内存占用情况。
5. 替代方案(若以上无效)
用ggplot2结合ggsignif替代ggpubr的统计标注功能,避开潜在兼容性问题:
library(ggplot2) library(ggsci) library(ggsignif) ggplot(s_sub, aes(x = Sources, y = Conc, color = Sources)) + geom_boxplot() + geom_jitter() + scale_color_jco() + geom_signif(comparisons = combn(unique(s_sub$Sources), 2, simplify = FALSE), test = "kruskal.test", map_signif_level = TRUE)
内容的提问来源于stack exchange,提问作者lin liu
相关产品推荐
相关产品推荐

