第3章:R语言与Bioconductor环境准备
这一章,咱们把"厨房"先搭好。做批次效应校正,说白了就是在R里跑edgeR这个包。要是R环境都没配利索,后面再牛的代码也跑不起来。我见过太多人卡在第一步——装不上包,或者版本冲突,然后跑来问我"为什么我的edgeR报错"。
嗯,咱一步步来,别急。
3.1 底层的R语言版本
先说R本身。Bioconductor的包对R版本有严格要求——每年4月和10月发布正式版,绝大多数时候你装最新的大版本就行。我建议用R ≥ 4.3,因为edgeR的最近几个版本都依赖较新的底层矩阵运算库。
你可以去CRAN官网下载对应系统的安装包。Windows用户直接下载.exe,macOS用户选.pkg,Linux用户可以用包管理器(比如apt install r-base)。装完打开终端敲一下:
R --version
如果看到版本号,说明装好了。我一般习惯在终端里跑R,但写复杂脚本时用RStudio更方便。
3.2 推荐IDE:RStudio
虽然R自带的GUI也能用,但说实话——不方便。项目管理、代码高亮、绘图预览,这些功能RStudio都帮你包了。尤其是调试边缘情况时,RStudio的断点功能能省你一半时间。
安装很简单:去RStudio官网下载免费开源的RStudio Desktop。注意:要保证RStudio版本和R大版本匹配。比如R 4.3.x要装RStudio 2023.06或更新的版本。
装完后打开RStudio,在Console里输入:
getRversion()
确认版本在4.3以上。我曾经遇到一个同事,R装了4.2,RStudio却装了个旧版,结果某些包编译通不过——你想想看,这种低级坑只要多留意一下就能避免。
3.3 Bioconductor的安装
Bioconductor是专门为生物信息学设计的R包仓库。它有自己的安装函数——BiocManager::install()。你不能直接用install.packages(),因为那些包不在CRAN上。
装BiocManager很简单,在R里跑一行:
install.packages("BiocManager")
然后就能用这个管理器装edgeR了:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("edgeR")
装好后验证一下:
library(edgeR)
packageVersion("edgeR")
如果没报错,edgeR就装好了。不过这里有个细节——Bioconductor的版本和R版本是一一对应的。比如R 4.3对应Bioconductor 3.18(具体版本号每年更新)。你不需要手动指定版本,BiocManager::install()会自动匹配。
modelMatrixMeth)找不到。解决方法很简单——把系统默认R切换到新版,或者用conda建隔离环境。
3.4 其他依赖包
edgeR本身的依赖并不多,但实际分析时往往还需要这几个包:
| 包名 | 作用 | 安装命令 |
|---|---|---|
| limma | 差异表达分析(edgeR常和limma配合) | BiocManager::install("limma") |
| statmod | 精确检验所需的统计模型 | install.packages("statmod") |
| ggplot2 | 绘图(做MDS图、火山图时用) | install.packages("ggplot2") |
| dplyr | 数据操纵 | install.packages("dplyr") |
你可以在一个脚本里批量装:
packages <- c("BiocManager", "edgeR", "limma", "statmod", "ggplot2", "dplyr")
for (pkg in packages) {
if (!requireNamespace(pkg, quietly = TRUE)) {
if (pkg %in% installed.packages()[, "Package"]) next
if (pkg %in% c("edgeR", "limma")) {
BiocManager::install(pkg)
} else {
install.packages(pkg)
}
}
}
为啥要这样写?因为有的包来自CRAN,有的来自Bioconductor,它们的安装方式不同。我个人写环境配置脚本时都是直接判断来源,省得记混。
3.5 环境配置的流程总结
做过很多次了,我把流程画成一张图,方便你对照检查:
从上往下看:先装好R,再装RStudio(可选但推荐),同时配置CRAN镜像(国内可以设https://mirrors.tuna.tsinghua.edu.cn/CRAN/,下载速度快很多)。然后装BiocManager,接着装edgeR和它的小伙伴。最后用library()验证一下。这一步做完,你的环境就准备好了。
3.6 一点小补充:Session Info
我每次开始一个新分析,第一行代码总是:
sessionInfo()
为什么?因为以后你要复现分析、或者找别人帮你debug时,这个信息太太太重要了。它能告诉你R版本、操作系统、所有加载的包的版本。我建议你把它保存到日志里:
sink("session_info.txt")
sessionInfo()
sink()
有了这个,别人一看就知道:"哦,你用的是R 4.3.1,edgeR 4.2.0,那没问题。" 省得来回问版本。
library(edgeR)。