8 类高频报错速查
| 报错现象 | 根因 | 解决方法 |
|---|---|---|
| Cannot allocate vector of size X GB | 读入 GWAS 汇总数据超出内存 | 分块读取;32GB+ 内存;关闭其他 R 会话 |
| JDK/openjdk 相关 Java 报错 | rJava 依赖缺失 | apt install default-jdk 后重装 rJava |
| extract_outcome_data 返回 0 行 | SNP 不重叠或 ID 版本不一致 | 统一 rsID 版本;检查 effect_allele 列 |
| API 401/403(ieugwasr) | OpenGWAS 需要 JWT token | 注册账号并 set_jwt() |
| ld_clump 卡住不动 | 远程 LD 服务限流 | 本地跑 plink + 1000G 参考面板 |
| 包安装 dependency failed | 依赖版本锁死 | renv 隔离环境;或 mamba 装 r-base |
| Warning: palindromic SNP | 回文 SNP 方向不确定 | 用 MR-PRESSO 或按 allele frequency 推断 |
| harmonise 后 SNP 大量丢失 | MAF 阈值/去重设置 | 检查 clump_r2 与 p1 参数合理性 |
环境层面的根治方案
多数“玄学报错”的根源是 R 环境被反复装卸弄脏。推荐两条路线:
- conda/renv 隔离:每个 MR 项目独立环境,
renv::init()锁定版本,可复现 - 容器化: rocker/tidyverse 基础镜像 + TwoSampleMR,一次构建处处运行
什么时候该换服务器
如果本地排查 + 改代码后仍然频繁 OOM,或 plink 本地 clumping 需要排队等机器,说明该上 32GB+ 内存的独立环境了——MR 讲究快速迭代试错,环境稳定比算力峰值更重要。
常见问题
TwoSampleMR 安装总是失败怎么办?
九成是依赖包版本冲突。建议新建一个干净的 R 环境(R ≥ 4.2),先安装 remotes,再用 remotes::install_github('MRCIEU/TwoSampleMR'),并确保系统已装 openjdk 和 libcurl 开发库。
为什么 extract_outcome_data 返回空结果?
通常是 SNP 的 rsID 在结局数据中不存在,或 allele 方向/坐标不匹配。先用 ieugwasr::assoc_qq 检查 SNP 重叠率,必要时把 SNP 升级到统一版本的 rsID(用 dbSNP merged 字段)。