R 语言与 RStudio 生信基础班课程笔记
核心结论:本课程旨在让学员掌握将公共数据挖掘与验证实验相结合的数据驱动研究思路,通过系统学习 R 语言及 RStudio 的使用,最终能够读懂并复现 Cell、Nature 等 CNS 文章的源代码,并将其套用到自己的数据中完成生信分析。
一、课程概述与学习理念
1.1 课程安排与基本信息
- 课程类型:生信基础班,是系列课程的第一节课,后续还有单细胞多组学班(时长约两个月)。
- 上课时间:每周六、周日各三节课,每节课 2-3 小时;前期讲课速度较慢,后期会加快。基础班总课时约 12-13 节,为期一个多月。
- 教学特色:课程中融合了人工智能(DeepSeek)的应用,包括用 DeepSeek 挖掘生信思路、指导代码运行报错等。
- 班级规模与承诺:培训班从 2019 年开办至 2025 年已开设六年,报名学员超四千人;承诺包教包会、一对一指导。但一个课题组仅限一人报名,全课题组或旁听课题组一起学习的情况不提供一对一指导。
- 答疑机制:每节课课后有半小时答疑(不限时),要求“每个学员的问题全部解决之后再进行下节课”,不建议跳跃式学习。
1.2 讲师背景
- 华哥:2024 年发表 SCI 论文 10 篇;2025 年 9 月将赴日本东京大学学习人工智能与医学,重点围绕临床数据、影像组学及大模型应用。本人发表过 Cell 子刊(Molecular Cell、Cancer Cell 等)。大的课题组负责人为王军建老师。
- 教学成果:学员已发表 CNS 主刊文章 8 篇,子刊和一区文章较多;第六期基础班学员 2021 年加入培训班,2024 年发表 PMC 文章(用上课安排的单细胞公共数据库数据练手,发现关键基因并验证发表)。
1.3 学习目标与正确理念
- 学习目标:把生信作为工具,帮助找到课题思路、丰富文章结论。
- 最低级的学习方式:只教敲代码、得到图。关键点在于理解图在文章中的作用,以及如何在合理合规的情况下调整参数。
- 核心观点:
- 生信画图容易,难点在于把图放进文章、符合文章趋势,且必须在不造假的前提下呈现更好结果。(原文金句:“深信画一个图是很容易的,难点在哪儿呢?难点在于你画的这个图怎么放到文章里边,怎么更能符合你文章的趋势。而且前提是在不造假的情况下。”)
- 学生信不能一蹴而就,发文章需要漫长过程。(原文金句:“发文章不是说今天学完明天就能发 sal 的,都需要一个漫长的过程。”)
- 传统科研是“假设驱动”,但拍脑袋想出的基因不一定正确——别人可能研究过但没得到阳性结果所以未发文章。现在提倡“数据驱动”——从数据挖掘中找到关键核心基因再验证。(原文金句:“所有的科学研究以往是假设驱动……现在我们通过数据挖掘,那就让数据来驱动我们的科学思路。”)
- 找差异基因不能只从一个维度选择,要从多维度(转录组、表观遗传、转录调控网络等)选,涉及多组学研究。(原文金句:“数据驱动是最为关键的,尤其是多组学研究。”)
- 若 WB 结果时阳时阴,说明找的是假阳性基因而非核心基因。(原文金句:“你找一个假阳性的结果,有的时候你连 QPCR 都 Q 不出来。”)应选择多数据维度支持、大多数样本符合趋势的基因。
- 当代码分析结果与实验结果不一致时(如分析趋势下降、实验验证升高),不能故意篡改数据(学术不端),而应在合理合规范围内调整,如剔除离散度大的离异值样本、通过多种算法改变趋势。
1.4 学习注意事项
- 不急于求成:学习要有所取舍,不钻牛角尖。(原文表述:“有些东西能理解就理解,理解不了也不会影响到你数据分析,要不然你会陷入死循环里。”)
- 系统学:围绕 CNS 文章源代码学习,不东拼西凑。
- 及时提问:有一对一指导、多个答疑助理,四千多人教学经验能满足需求。
- AI 使用建议:人工智能不是万能的,关键点在于知道怎么提问;问题越细越具体,回答越详细。(原文表述:“你问的问题越细越具体,他回答就越详细”;“你比如说把截屏截给我,我就知道你这里报错可能是什么问题”。)
- 推荐的 AI 模型:DeepSeek 和 GPT-4O(GPT-4O 模型一般比 DeepSeek 更强)。
- 搜索工具:推荐用微软 Bing 搜索,不用百度(百度前几条都是广告)。
二、核受体 RORγ 多肿瘤研究案例
2.1 NC 案例:三阴性乳腺癌(2019 年发表)
- 研究对象:RORγ(转录因子/核受体/孤儿核受体),靶向调控胆固醇合成通路。
- 乳腺癌分型:三阴性、ER 阳性、HER2 阴性。
- 研究逻辑框架(按文章 Figure 顺序解读):
- Figure 1:用 GSVA 通路活性打分热图分析公共数据库(TCGA 等),发现 TNBC 中胆固醇合成通路升高(相对 ER 阳性);同时也有脂质代谢、TCA 循环、cell cycle/proliferation 通路升高。B 图用小提琴图/箱线图做比较,P<0.05 有显著性差异。
- 相关性分析:TNBC 中胆固醇通路活性与 RORγ 表达量 R=0.2,P<0.001,显著正相关;ER 阳性中 R=0.072,负相关或无相关。
- 科学假设:RORγ 升高导致胆固醇升高。
- Figure 2:敲低、过表达、敲除(CRISPR)、siRNA、小分子抑制剂,观察对凋亡、侵袭、增值的影响。
- Figure 3:RORγ 给药前后的 RNA-seq,取差异基因交集,富集到胆固醇合成通路。
- Figure 4:ChIP-seq 验证 RORγ 直接结合胆固醇合成通路靶基因(表观遗传角度)。
- Figure 5:他汀类药物与 RORγ 抑制剂联合用药,协同增强抗肿瘤作用(1+1>2)。
- Figure 6:动物实验验证肿瘤体积抑制。
- Figure 7:胆固醇全身稳态检测,说明安全性。
2.2 其他肿瘤中的 RORγ 研究
| 肿瘤类型 | 发表期刊 | 研究要点 |
|---|---|---|
| 前列腺癌 | Nature Medicine | 同一 RORγ 基因,通过调控 AR(雄激素受体)影响去势抵抗性前列腺癌的生存和进展 |
| 胰腺癌 | Cell 主刊 | 最早用单细胞测序,发现核受体 RORγ 调控鼠和人胰腺癌 |
| 肝癌 | Molecular Therapy | 用单细胞证明 RORγ 在肝癌的肿瘤细胞中高表达(肿瘤 > normal > 癌旁);拟时间分析证明 RORγ 影响肝癌从原发灶向转移灶转移 |
| 骨肉瘤 | Cell Report Medicine | RORγ 影响线粒体氧化磷酸化,通过单细胞验证 |
- 单细胞分析思路(肝癌案例):找到 RORγ 在哪表达 → 证明在肿瘤细胞(恶性增殖的上皮细胞)内高表达 → 拟时间分析证明影响从原发灶向转移灶的转移。
2.3 其他核受体研究
- RORα:学员课题,发表 PMC。
- ERG:小细胞肺癌转移,通过公共数据库单细胞验证。
- NR1H4:肺纤维化,直接做单细胞测序,WB 验证。
- 还有一个小抑制剂相关研究发表在 AP S B。
- 背景说明:单细胞测序以前贵所以没做,错过 Cell 文章;学习过程中发现数据驱动思路会越来越复杂,包括空间转录组、定位组织内部或边缘区域、细胞间相互作用等,这属于未来复杂性。
三、R 与 RStudio 安装
3.1 为什么学 R
- 根本原因:CNS 文章的数据分析主流使用 R,必须与主流算法和软件包对应。绝大部分 CNS 文章用 R 和 Python 做数据分析,不用 Java、C++ 等。
- R 语言的五条优点:
- 免费开源(部分学术期刊拒绝无版权软件投稿)。
- 命令行工作方式(与 SPSS 等类似,方便)。
- 安装包小巧精简(部分软件安装需 2-3 GB,R 本身较小)。
- 功能强大,不仅能做数据分析,还能画图(数据最终展示结果都是图)。
- R 语言名称来源:来源于两位主要作者(Robert 和 Ross)的首字母。
- R 与 RStudio 的关系:R 是内核算运算(如 1+1=2),RStudio 是外壳/皮肤/IDE(集成开发环境);真正发挥运算功能的是 R;R 本身是黑白命令框,可视化差。
3.2 安装顺序与版本选择
- 安装顺序:必须先安装 R,再安装 RStudio;颠倒顺序可能出现调用错误。
- R 版本建议:
- Windows 用 4.3 或 4.4;苹果系统必须用 4.4(4.3 会报错)。
- 不用 4.5(太新,包未发布);不用 3.6(太旧,很多包下架有问题)。
- 已装过 R 的学员不用更新;Windows 装 4.3 就行,不用再装 4.4。下载旧版时推荐 4.4.1 或 4.3.0。
- 苹果系统芯片区分:英特尔芯片用 X86 安装包,M1/M3/M4/M5 芯片用 ARM 安装包。
- RStudio 版本:RStudio 被 Posit 收购,官网可下载最新版;版本无要求,新版旧版都可以。
- 多版本共存:电脑可同时存在多个 R 版本,RStudio 可切换不同版本的 R。
- 安装注意事项:
- 选英文版(中文版报错会自动翻译;装成中文版后期可写一行代码自动改为英文,不用重新装)。
- 知道安装路径(后续要编译);放内存大的盘;路径不能有中文;路径要有记忆位置。
- 没有明确提示的选项可以随便选(如 64 位/32 位、MDI 或 SSDI 不影响)。
- 文件后缀名:EXE(Windows 安装软件)、PKG、DMG(苹果系统)、PDF、WORD、PPT、TXT、CSV 等。
- 电脑配置:至少 16G 运行内存。
3.3 下载安装步骤
- 浏览器输入 R 搜索 → 打开 R project 官网。
- 点击 download → 选镜像(清华、浙大等)→ 选 Windows/Mac 版本 → 选 base → 下载。
- 下载旧版则打开 previous release,推荐 4.4.1 或 4.3.0。
- Windows 下载 EXE,Mac 选 PKG(区分 arm 或 x86)。
- 安装时选英文,注意路径不能有中文。
- 到 RStudio 官网下载对应版本安装。
四、R 语言基础入门
4.1 RStudio 界面
- 打开方法:电脑开始栏中找到 RStudio 图标(可右键固定到任务栏),点击左键打开。
- 界面四个分区:
- 左上角:脚本编辑框(写代码)。
- 左下角:控制台(输出代码运行结果)。
- 右上角:环境(environment,显示对象)。
- 右下角:文件、plot(画图)、包(R 包)、help(帮助文档)、viewer(动态可视化)、presentation 等功能。
- 创建脚本框:默认只有三个分区,点击左上角加号(File → New File → R Script)或快捷键 Ctrl + Shift + N。
- 主题设置:Tools → Global Options → Appearance,调整字体大小(如 150→175)、选择编辑主题,点击 Apply 再点 OK。默认主题为黑白。
4.2 基础知识点
赋值与对象
- 赋值符号两种写法:等号
=和小于号加减号<-,含义相同,都是把右边的值赋给左边的对象。 - 为什么有两种写法:编程语言中“=”不是数学意义上的等号,而是从右向左的赋值操作;R 的开发者用箭头“<-”帮助初学者直观理解赋值方向。实际使用中,Cell 文章源代码两种写法混用,无统一标准,学习者可任选。
- 对象(object)= 变量(variable):因为值可以改变。(原文金句:“你要想进行数据分析,你必须有对象。你没有数据能分析单细胞数据吗?你肯定不能。”)所有数据必须是一个对象,没有对象就没有数据,无法进行数据分析。
- 示例:
A = 1或A <- 1表示把数值 1 赋值给对象 A。 - 运行方式:选中代码行,点击绿色 Run 按钮(或光标置于代码行任意位置再点击 Run)。初学者不建议框选多行一次性运行,应逐行运行,便于定位报错。(原文表述:如同学跑步要先从走开始。)
- 查看对象:运行对象本身才能读取完整内容;print 函数也可查看。当对象很复杂(如十万个细胞)时,界面只显示部分数据。(原文金句:“所以这就是我们查看对象的主要目的”。)
- 清理环境:环境窗格右上角有扫把图标(clear objects from workspace),点击后弹窗确认点 Yes 即可删除所有对象。
- 删除指定对象:remove 函数全称 R E M O V E,可缩写为 rm。调用
rm(对象名),可一次删除多个对象,如rm(S2, S3, S123)。rm() 删除不存在对象时返回 warning(警告)而非报错。 - Tab 键补全:输入函数或对象名称前几个字母后,按 Tab 键弹出候选补全列表,选择即可自动补全。Tab 键可补全代码、函数、对象名称和文件名。
- 代码运行不可撤回:(原文金句:“代码一旦运行,它就无法撤回……运行错的话它没办法返回,只能从零开始。”)因此要注意代码逻辑顺序。
- 注释:井号键
#。功能有两个:批注代码、让某行代码不运行。(原文金句:“井号键的目的就一点,不要让它报错,我给它注释掉;但它的功能有两个:批注代码、让某行代码不运行。”)不常用的代码不要删除,注释掉即可。
命名规则
- 对象名不能以数字开头(可写 A3=1 或 sample1=10,不能写 3A=1)。
- R 语言区分大小写,大写 A 和小写 a 是两个不同对象,写反会报错。
- 特殊含义字符不能作为对象名(如 if、else、for、while 等,后续课程讲)。
- 同一对象不能重复命名不同数据,否则产生替换;相同数据可命名同一对象,不同数据要命名不同对象。
- 对象名不能有空格;连接两个词可用下划线或点。点写法在 R 中可用,但 Python 中点是属性的调用,含义不同,因此推荐用下划线。
- 如果一定要带空格,可加引号(如“华哥 ”),但这种方法“迫不得已、绝不可常规使用”,后续会引发各种问题。
- for 循环中出现的空格(如“i in”)不是对象名空格,代表两个字符、两个内容。
4.3 单细胞示例数据
- 示例代码:S1=456、S2=789、S3=123(三个单细胞样本,用简单数值代替,实际样本可有几千万个数值);S123=123456789(三个样本合并后的结果)。
- S7 = 1:100 生成从 1 到 100 的 100 个整数,只显示对象类型为 int(整数型)和首尾数值(1 和 100)。
五、CNS 文章源代码解读
5.1 获取代码的途径
- 三大数据/代码数据库:GitHub、Zenodo 等。
- 文章源代码一般放在参考文献之后的方法部分或表格中,有“data and code availability”说明。
- GitHub 为国外服务器,国内网络无法直接访问,需使用 VPN(老师不便多说使用方法,可问助理)。
- 并非所有文章都公开源代码。
5.2 Cell 文章案例(肾透明细胞癌单细胞蛋白活性分析)
- R 包使用示例:ser(即 Seurat,读取单细胞数据)、singleR(单细胞注释)、inferCNV(infer 推断 + CNV 染色体拷贝数变异,计算肿瘤细胞染色体)、wiaper 等。
- 赋值混用实例:源代码中既有等于号(如第 58 行 list 赋值给 single cell object),也有小于减号(如第 57 行 list file 赋值给 object.file)。
- 注释实例:第 1068 行“integrated louven subclustering”注释说明要进行 Louvain 聚类;第 1072 行注释说明使用 harmony 方法做批次矫正(batch correct)。第 1671 行有“well plot”被井号键注释掉,说明暂时不运行但保留。
- 对象命名实例:pb.mc_data 表示外周血(PBMC)单细胞测序数据;pb.mc_5 至 pb.mc_9 分别表示第 5-9 个样本;list_cd45_positive 表示 CD45 阳性(免疫细胞)的列表,list_cd45_negative 表示 CD45 阴性(非免疫细胞);positive_integrated 表示免疫细胞整合后的对象。
- remove 函数实例:第 1716 行一次性删除 CD45 阴性、阳性、V、P 四个对象;CNS 文章中经常出现。
- print 函数实例:第 311 行 print 打印对象,第 307 行 print(dim) 打印维度。
5.3 Nature 文章方法部分解读(2022 年发表,基础班第四批学员为共同一作)
- 单细胞 RNA 测序数据(counts)比对到 HG19 参考基因组。
- 表达矩阵(expression matrix)展示每个基因在每个细胞的表达量,通过函数 read 读取,在 ser 包中完成。
- 往期学员用 R 3.63(3.63.2),现已更新至 4.1.3、4.2.2 或 4.3.1。本课程使用 R 4.3.1。
- 核心逻辑:若没有 Seurat 包就没有该函数,无法读取单细胞数据,也就无法分析。(原文金句:“没有包就没有分析的可能性。R 包是由社区开发的,谁都能开发。”)
六、R 包安装
6.1 基本概念
- R 包定义:由社区开发的、包含函数(function)和数据集(data)的集合。开发者在开发时决定函数的具体内容和数量,一个包可能包含数个到十个不等的函数。
- 核心价值:提升 R 语言的效率,例如用于单细胞数据分析、拟时间分析和多样本整合等。
- 官方存放位置:CRAN。
- 安装函数:
install.packages(区别于 BiocManager::install)。 - 加载函数:
library()。 - 依赖包:dependency packages,安装过程中自动下载安装;若提前预习可避免临时的依赖包安装问题。
- 安装成功标准:以 library 加载无报错为准。(原文反复强调:“没有报错,就代表安装成功”“没有出现 error 就是成功的”。)
- warning 处理:安装过程中的 warning message 可以忽略,只看加载时是否出现 error。
6.2 安装失败的常见原因与解决策略
| 问题类型 | 具体表现 | 解决方案 |
|---|---|---|
| R 版本与包版本不匹配 | 安装失败、包无法加载、提示版本过低或过高 | 安装 R 4.4.1(推荐最终方案) |
| 网络问题 | 下载失败、time out 超时 | 切换镜像(如西湖大学镜像)、关闭 VPN、切换网络或重启电脑 |
| 中文引号 | 路径中出现“??” | 将中文引号改为英文引号 |
| 旧包未移除 | 手动更新后找不到 matrix.dll | 彻底删除 library 文件夹下的 matrix 和 seuratObject 文件夹后重装 |
| 单位/医院网络受限 | 无法访问外网 | 设置镜像或使用手机流量 |
| 杀毒软件干扰 | 安装中断 | 需一对一排查 |
6.3 安装 Seurat 包的步骤
- 从 Nature 文章复制相关代码或搜索包的官网。
- 在官网首页点击“install”,复制提供的代码到 RStudio,建议一行一行运行。
- 第一行代码运行后,等待命令行出现大于号(>)再运行第二行。
- 运行过程中如提示是否编译源包(source package with need complication),需输入 yes。
- 等待所有依赖包下载安装完成(观察进度条)。
- 安装完成后,使用
library(Seurat)函数加载检查是否报错。
6.4 设置镜像(以西湖大学为例)
- 在 RStudio 中运行
options函数的相关代码更改镜像。 - 应在安装 R 包之前进行,尤其是在网络状况不佳时。
- 若安装中途卡顿,点击红色按钮 stop 停止,运行镜像代码后,再将刚才的 install.packages 命令复制到控制台重新执行。
6.5 手动更新 matrix 包的步骤
背景:经典报错,系统提示需要大于等于 1.6.4(或 1.6.5)版本。
- 关闭并重启 RStudio,以解除依赖包的调用。
- 在右下角 packages 面板搜索 MATRIX,点击叉号将其移除。
- 打开浏览器搜索“matrix R”,点击第一个链接(CRAN 官网)。
- 在 download 页面,根据操作系统选择对应的安装包(Windows 用户选择 Windows 版本,如 matrix 1.7.3)。
- 下载并保存到本地文件夹(注意路径不要包含中文)。
- 回到 RStudio,点击右下角 install 按钮,将 CRAN 选项改为第二个,选择刚刚下载的文件进行安装。
- 安装成功后,再重新运行安装 Seurat 的代码。
6.6 处理 Seurat 与 matrix 包版本不兼容的最终方案
- 方案一:将 R 升级到 4.4.1 版本。通过 global options → change → choose specific version,选择 4.4.1 并点击 ok 应用,重启 RStudio 即可。
- 方案二:获取华哥提供的 1.65 版本 matrix 包和其 R 包压缩文件,解压后直接覆盖替换到自己 R 安装目录下的 library 文件夹中,无需运行安装命令。
- 方案三:继续寻求华哥一对一的远程仔细指导。
6.7 具体报错案例
- matrix 包版本过低:提示需要大于等于 1.6.4(或 1.6.5),解决方法为手动更新或脚本更新,推荐手动更新。
- MiniUI 包不存在:通过 install 命令重新安装该包即可解决。
- SeuratObject 报错:如“找不到 serobject 对象”或“serobject 版本与 sat 包不匹配”,需重新安装或降级 SeuratObject 包至 5.0 版本,或使用华哥提供的压缩包手动安装。
- time out 超时:运行镜像代码或更换网络。
- SP 包缺失:需手动安装 SP 包。
- 手动更新 matrix 后仍报错(找不到 matrix.dll):原因是未先移除旧包而强行安装,导致新包无法被调用。解决方法是彻底删除 library 文件夹下的 matrix 和 seuratObject 文件夹,再重新安装。
6.8 安装注意事项
- 引号必须使用英文引号。
- 安装后必须用 library() 函数进行加载验证,截屏提问时必须截全屏,以便判断隐藏错误信息。
- 包只需安装一次,后续直接调用 library() 加载即可,重复安装会报错。
- 发现包无法加载时,需先手动移除旧包才能重新安装。
- 强烈建议不要使用旧版 R(如 3.6.3),否则会出现更多版本对应问题;原文明确指出“用 4.3 会报错,用 4.2 会更报错”,推荐 4.4.1。
- 安装过程可能耗时较长(原文提到“已经是 3 个小时了,三个半小时”)。
- R 可以不联网运行(不安装包的情况下,或包已下载解压后)。
七、学习总结与行动清单
核心公式与原则
- 学习最终标准:“我看这篇文章的时候,我能够把自己的数据放到 sell 这篇文章里面,给它复现出来,里面的每行代码我都能看得懂,这才是达到了这次培训班的目标。”
- 学习心态:“做事情不要浮躁,静下心来,一个知识点一个知识点地解决,一个报错一个报错解决,最后把所有的报错都解决了,你不就学会了吗?”
- 软件使用原则:“用软件时候你追求的不是最新,追求的是稳定。”
- 学习方法:
- 编程基础必须学扎实,如同盖高楼地基要稳,否则后续代码报错无法修改。前几节课讲得慢是有意为之。
- 琐碎知识点学习:无法串成体系,只能一个一个学、多学多用,如同学英语字母 A B C D 无法串联。
- 鼓励大胆尝试代码(原文金句:“当你把所有的坑都踩一遍的时候,你后面就没有坑可以踩了。”),不确定就运行试试,报错就知道不可行。
- 课前预习下节课内容(通常在推文中能找到),提前了解需要安装哪些依赖包。
- 算法不深入讲解(如贝叶斯模型、Transformer 算法),因大部分学员数学基础不足且讲师自认没能力讲推导;只讲包怎么用、函数得到什么结论、数据怎么来。
- 学习要有所取舍,不钻牛角尖,避免陷入死循环。
- 课程时间安排原因:周六下午学完周六晚上复习,周日上午学完周日下午复习;第一周为适应期,有专门答疑安排。
学员行动清单
- [ ] 根据电脑系统(Windows/苹果)和芯片类型(英特尔/ARM)下载并安装正确的 R 版本(推荐 4.4.1,Windows 可 4.3)。
- [ ] 安装 RStudio(版本无要求),设置英文环境、无中文路径。
- [ ] 打开 RStudio,创建脚本框(Ctrl + Shift + N),熟悉四个分区布局。
- [ ] 练习赋值操作:A = 1、A <- 1,查看环境窗格变化。
- [ ] 练习查看对象(运行对象本身或 print 函数)和删除对象(rm 函数或扫把图标)。
- [ ] 记住命名规则:不以数字开头、区分大小写、无空格、特殊字符不可用、推荐下划线。
- [ ] 安装 Seurat、GEOquery 和 back manager 三个包,用 library() 加载验证。
- [ ] 若遇到版本报错,优先升级到 R 4.4.1;若遇网络问题,配置西湖大学镜像。
- [ ] 使用 Tab 键补全函数和对象名。
- [ ] 将不常用代码用井号注释掉而非删除。
- [ ] 学习用 AI(DeepSeek 或 GPT-4O)辅助解决报错,提问要具体并附截屏。