第2章 环境搭建:R与RStudio安装、Bioconductor配置、edgeR包安装与版本管理
好,咱们直接开工。这一章我带你把做RNA-seq差异分析的第一把交椅——edgeR跑起来。你想想看,管线再牛,工具再高级,环境要是烂在起跑线上,后面全是坑。我曾经因为R版本不兼容,折腾了一整个下午装edgeR……从那以后我养成一个习惯:先画环境图,再动手。
本章核心目标
- 安装正确版本的R(4.x系列)
- 配置RStudio并连接R
- 配置Bioconductor镜像源
- 安装edgeR并管理版本
- 写一段验证代码确认环境就绪
2.1 R 与 RStudio 安装
我个人习惯用 R 4.3.x 系列。edgeR 的最新版在 4.3 和 4.4 上都测过,但 4.2 及以下有些函数已经 deprecated 了。你如果还在用 R 4.0 或者 3.6,呃……建议升级。
第一步:下载 R
- Windows:去 CRAN 下载 R-4.3.3-win.exe
- macOS:下载 R-4.3.3-arm64.pkg(Apple Silicon)或 x86_64.pkg
- Linux(Ubuntu):用 apt,但我建议用 conda 统一管理
避开另一个坑:我曾经直接双击安装包就一路 Next,结果 R 被装到了带空格的路径里,后面 RStudio 怎么都连不上。切记:安装路径不要有中文或空格,纯英文路径最稳。
第二步:安装 RStudio
去 Posit 官网下载 RStudio 2024.04.2。安装后打开,它会自动检测到系统里的 R 版本。如果没识别,可以在 Tools → Global Options → General → R Version 里手动指定。
确认版本没问题后,打开 R 控制台敲一句:
R.version.string
结果像这样:
[1] "R version 4.3.3 (2024-02-29 ucrt)"
2.2 Bioconductor 配置
R 本身装不了 Bioconductor 包,得先装 BiocManager。我记得第一次搞的时候直接用了 install.packages("edgeR"),结果装了个 CRAN 上的古旧版……千万别学我。
安装 BiocManager
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(version = "3.18") # 对应 R 4.3
设置镜像源——这个很关键。我从清华源下 Bioconductor 包,速度能快几十倍。配置方法:
# 设置 CRAN 镜像
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
# 设置 Bioconductor 镜像(写在 .Rprofile 里一劳永逸)
cat('options(BioC_mirror = "https://mirrors.tuna.tsinghua.edu.cn/bioconductor")\n',
file = "~/.Rprofile", append = TRUE)
然后重启 R 会话,或者手动 source:
source("~/.Rprofile")
警告:如果你在单位内网、无法连外网,可以自建本地镜像。我曾经就是被防火墙卡了一整天,最后让 IT 开了 Bioconductor 的 http 代理才搞定。建议先 ping bioconductor.org 测试连通性。
2.3 edgeR 包安装与版本管理
好,重头戏来了。装 edgeR 其实就一行:
BiocManager::install("edgeR")
但版本管理才是区分新手的试金石。
怎么确认装的是哪个版本?
packageVersion("edgeR")
比如输出 [1] ‘4.2.0’,说明是最新版。
如果我要复现别人论文里的老版本呢?
有两种办法:
- conda 环境隔离(推荐)——先创建 R 4.2 的 conda 环境,专跑 edgeR 3.36:
conda create -n r42 r-base=4.2 r-essentials
conda activate r42
R
BiocManager::install("edgeR", version = "3.16")
- remotes::install_version——前提已经装了旧版 R:
remotes::install_version("edgeR", version = "3.36.0", repos = "http://bioconductor.org/packages/3.16/bioc/")
| 版本管理方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| conda environment | 多项目并行、跨 R 版本 | 完全隔离,最稳定 | 需要额外学 conda |
| remotes::install_version | 单机单版本、临时复现 | 操作简单,无需新工具 | 依赖旧 R 版本本体 |
| packrat / renv | 项目级依赖锁定 | 可生成 lockfile | 较重量级,适合大型项目 |
我的经验:做教材或复现分析时我偏向 conda。因为整个环境(包括 R、BLAS、系统库)都能锁定,不会有莫名其妙依赖冲突。比如 edgeR 底层调用 Rcpp 和 limma,如果这两个包版本不匹配,算出来的 P 值都可能不一样——别问我怎么知道的。
2.4 快速验证:跑一段 edgeR 测试
环境搭好没,跑一段最小示例就知道。我在实战里每次装完新 edgeR 都会先执行这个:
library(edgeR)
# 创建一个 10 基因 × 6 样本的模拟计数矩阵
counts <- matrix(rnbinom(60, mu = 10, size = 0.2), nrow = 10)
group <- factor(c(1,1,1,2,2,2))
y <- DGEList(counts = counts, group = group)
y <- calcNormFactors(y)
design <- model.matrix(~group)
y <- estimateDisp(y, design)
fit <- glmQLFit(y, design)
qlf <- glmQLFTest(fit, coef = 2)
topTags(qlf)
如果没报错,还打印出一张基因差异表,恭喜你,环境完全就绪。
常见错因排雷
- “package ‘edgeR’ is not installed” → 确认用了 BiocManager::install,不是 install.packages
- “unable to load shared object” → 一般是 Rcpp 或系统库版本冲突,用 conda 重建环境
- “version mismatch” → 你装的 edgeR 依赖的 Bioconductor 版本与当前 R 不匹配,参考上面版本管理小节
嗯,到这里你已经有了一个可用的 edgeR 环境。接下来就可以往 GLM 模型里塞真实数据了。别急,我们一步步来。