3. 环境搭建:安装 R 与 RStudio、Harmony 包及其依赖
做生信分析,环境就是你的手术台。R 和 RStudio 是主刀工具,Harmony 就是那把专门处理批次效应的精细手术刀。今天我们就搭好这个台子。
3.1 R 与 RStudio:先造轮子再上路
我个人习惯先从 R 官网下载安装包。别用系统自带的包管理器装,版本容易落后,后面踩坑。
3.1.1 安装 R(版本 4.0 以上)
Harmony 在 R 4.0 及以上版本表现最稳定。我在项目中遇到过用户用 R 3.6 装不上 Harmony 的情况——嗯,后来发现是依赖包版本太老。
各平台安装方式:
- Windows:去 CRAN 下载 .exe,一路 Next
- macOS:下载 .pkg 文件,Intel 和 M 芯片选对应版本
- Linux (Ubuntu/Debian):用 apt 或下载 .deb
# Ubuntu 示例
sudo apt update
sudo apt install r-base r-base-dev
# 验证版本
R --version
3.1.2 安装 RStudio
RStudio 是 IDE,不是强制项,但我建议你用。代码高亮、项目管理、Git 集成——你想想看,靠终端敲 R 有多痛苦。
选 RStudio Desktop (Open Source Edition) 免费版就够用。
- 下载安装包:https://posit.co/download/rstudio-desktop/(文字提示,无实际URL)
- 安装完成后打开,检查 R 是否自动关联
3.2 Harmony 包安装:三步搞定
Harmony 本身托管在 CRAN 和 GitHub。我用 GitHub 版更多,因为 bug 修复更及时。
3.2.1 从 CRAN 安装(稳定版)
install.packages("harmony")
一行代码搞定。它会自动拉取依赖包,比如 Rcpp、RcppArmadillo、irlba 等。
3.2.2 从 GitHub 安装(开发版)
你如果需要修复某些特定 bug 或新功能,可以用 devtools:
install.packages("devtools")
devtools::install_github("immunogenomics/harmony")
3.3 依赖包管理:别让库打架
Harmony 依赖这几个核心包:
| 包名 | 作用 | 常见问题 |
|---|---|---|
Rcpp |
调用 C++ 后端计算 | 编译工具链缺失 |
RcppArmadillo |
线性代数加速 | 版本过低导致报错 |
irlba |
快速 SVD 分解 | 对稀疏矩阵敏感 |
tidyverse |
数据处理/可视化 | 非强制但推荐 |
装依赖时最容易翻车的是 Rcpp 的编译。Windows 上缺 Rtools,macOS 缺 Xcode Command Line Tools。说白了就是编译器没配好。
install.packages("harmony")。
3.4 验证安装:跑个测试才放心
环境搭好了,跑个简单测试。我每次在新机器上都要走一遍,确认 Harmony 能正常加载和运行。
# 加载 Harmony
library(harmony)
# 查看版本
packageVersion("harmony")
# 运行内置演示数据
data(cell_lines)
head(cell_lines)
如果没报错,说明环境就绪。如果报错,看下面避坑指南。
3.5 避坑指南:我踩过的雷
这里列几个常见问题,都是我在项目中遇到过的情况:
- ❌ 报错:`RcppArmadillo` 版本低
升级到最新版:install.packages("RcppArmadillo") - ❌ 报错:`irlba` 安装失败
检查 R 版本是否 4.0+,太旧的话换新 R - ❌ 报错:`library(harmony)` 找不到
检查是否装到了不同 library 路径:.libPaths()查看 - ❌ macOS 编译报错
装 Xcode CLI tools:xcode-select --install
conda create -n r-harmony r-base=4.2,再装 Harmony。适合多人协作或服务器部署。
3.6 环境搭建流程图
下面这张图帮你理清整体流程。说白了就是先装 R,再装 Studio,最后装 Harmony 及其依赖。
按这个顺序走,基本不会出大问题。装完后重启 RStudio,跑个 library(harmony),看到欢迎消息,环境搭建就完成了。
- [ ] R 版本 ≥ 4.0
- [ ] RStudio 正常启动
- [ ]
library(harmony)无报错 - [ ]
data(cell_lines)能加载