You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:12:43