R语言

Lecture01:R语言介绍及环境搭建

罗益民

2024-08-23

欢迎来到R语言课程!

课程介绍与目标

  • 课程目标:牢固掌握R语言编程,为生信学习打下坚实基础。
  • 课程内容
    • R语言基础
    • R语言中的统计学
    • R语言实战演练
  • 预期成果:能够使用R语言进行数据分析和可视化。

Why R?

R和生物信息学

R语言在生物信息学中被广泛应用,主要用于数据分析、可视化和统计建模。是生物信息学专业的“第一语言”

  • 基因表达分析:R语言可以用于分析基因表达数据,包括差异表达分析、聚类分析、通路分析等。常用的包括DESeq2、edgeR等。

  • DNA序列分析:R语言可以用于对DNA序列进行分析,如序列比对、变异检测、序列特征提取等。常用的包括Bioconductor生物信息学包。

  • 蛋白质结构分析:R语言可以用于分析蛋白质结构数据,如蛋白质结构预测、蛋白质结构比对等。

  • 生物统计建模:R语言可以用于生物统计建模,如生存分析、疾病风险预测、群体遗传学分析等。

  • 可视化:R语言有丰富的绘图功能,可以用于绘制生物信息学数据的图表,如热图、散点图、箱线图等。

在开始学习R之前…

  • 什么是计算机程序?

  • 冯诺依曼结构(Von Neumann architecture)

计算机程序

一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序源代码),用于指导懂汉语的人(体系结构)来做这个菜。

通常,以文本为基础的计算机程序要经过编译和链接而成为一种人们看不懂而计算机可解读的一连串数字的格式,然后放入运行。这种程序也叫作编译语言。无需事先编译就可运行的程序,通常称之为脚本程序(script)或解释型语言。

计算机程序

  • 程序通常首先用一种计算机程序设计语言编写,然后用编译器或者解释器翻译成机器语言。
  • 基于冯诺依曼结构的计算机,如果没有程序的支持,将无法工作。一个计算机程序是一系列指令的集合。

编程语言分类

是否需要事先编译

  • 编译型语言:C、C++、Java…
  • 解释型语言(脚本语言):Python、JavaScript、Ruby…

与硬件的距离

  • 低级语言:机器语言、汇编语言
  • 高级语言:除了以上两种的所有其它语言

类型定义

  • 强类型语言:Java、C#、Python、C++…
  • 弱类型语言:VB、PHP、JavaScript…

高级程序语言

C

#include <stdio.h>
int main(void) {
    printf("Hello world!\n");
    return 0;
}

C++

#include <iostream>
int main()
{
    std::cout<<"Hello World!"<<endl;
    return 0;
}

Java

public class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

高级程序语言

Javascript

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello, World!</title>
</head>
<body>
    <script>
        // JavaScript 代码写在这里
        document.write("Hello, World!");
        // 或者使用 console.log 将信息输出到浏览器的控制台
        console.log("Hello, World!");
    </script>
</body>
</html>

python

print("Hello, World!")

R和其它语言都不太一样…

# 安装并加载 ggplot2 包
if (!require("ggplot2")) install.packages("ggplot2")
library(ggplot2)

# 手动创建一个数据框
set.seed(123) # 设置随机数种子以便结果可复现
cars <- data.frame(
  CarModel = c("Car A", "Car B", "Car C", "Car D", "Car E", "Car F", "Car G", "Car H", "Car I", "Car J"),
  Weight = runif(10, 2000, 4000),  # 随机生成汽车重量,单位为磅
  MPG = rnorm(10, 20, 5)           # 随机生成每加仑英里数,均值为20,标准差为5
)

# 计算每款车的 MPG 标准差
mpg_sd <- sd(cars$MPG)

# 使用 ggplot2 绘制箱线图
p <- ggplot(cars, aes(x = CarModel, y = MPG)) +
  geom_boxplot() +  # 添加箱线图层
  geom_errorbar(aes(ymin = MPG - sd(MPG), ymax = MPG + sd(MPG)), width = 0.2) +
  labs(title = "MPG Boxplot with SD",
       x = "Car Model",
       y = "Miles per Gallon (MPG)") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())

# 打印图表
print(p)

代码运行结果

R语言的一般特点

  1. 自由软件,免费、开放源代码,支持各个主要计算机系统;
  2. 完整的程序设计语言,基于函数和对象,可以自定义函数,调入C、C++、Fortran编译的代码;
  3. 具有完善的数据类型,如向量、矩阵、因子、数据集、一般对象等,支持缺失值,代码像伪代码一样简洁、可读;
  4. 强调交互式数据分析,支持复杂算法描述,图形功能强;
  5. 实现了经典的、现代的统计方法,如参数和非参数假设检验、线性回归、广义线性回归、非线性回归、可加模型、树回归、混合模型、方差分析、判别、聚类、时间序列分析等。
  6. 统计科研工作者广泛使用R进行计算和发表算法。R有上万扩展包(截止2023年4月在R扩展包主要分发网站CRAN上有一万九千多个)

R语言的技术特点

S语言作者,R语言专家J. M. Chambers((J. M. Chambers 2016))指出R的本质特征:

  • R中所有的存在都是对象;
  • R中发生的动作都是函数调用。

详细地说R有如下技术特点:

  • 函数编程(functional programming)。R语言虽然不是严格的functional programming语言,但可以遵照其原则编程,得到可验证的可靠程序。
  • 支持对象类和类方法。基于对象的程序设计。
  • 是动态类型语言,解释执行,运行速度较慢。
  • 数据框是基本的观测数据类型,类似于数据库的表。
  • 开源软件(Open source software)。可深入探查,开发者和用户交互。
  • 可以用作C和C++、FORTRAN语言编写的算法库的接口。
  • 主要数值算法采用已广泛测试和采纳的算法实现,如排序、随机数生成、线性代数。

R语言的应用领域

R语言是一种广泛使用的统计分析和图形表示语言,主要应用领域有:

  • 统计分析:R最初被设计用于统计分析,它提供了大量的统计测试、模型构建和数据探索工具。

  • 生物统计学:R在生物统计学领域非常流行,它提供了许多专门用于生物数据分析的包。

  • 遗传学:R在遗传学研究中也有广泛应用,特别是用于基因组数据的分析。

  • 数据可视化:R拥有强大的数据可视化功能,可以创建各种图表和图形,如条形图、折线图、散点图、箱线图等。

  • 数据挖掘:R可以用于数据挖掘任务,包括聚类、分类、回归、关联规则学习等。

  • 机器学习:R拥有多个机器学习包,如caret、randomForest、e1071等,可以用于构建和评估机器学习模型。

R 语言概述

R语言是一种开源的编程语言和软件环境,主要用于统计计算和图形表示。它由Ross Ihaka(罗斯·伊哈卡)Robert Gentleman(罗伯特·詹特曼)在新西兰奥克兰大学于1993年创建,以S语言为基础发展而来。R语言因其强大的数据处理能力、丰富的统计分析功能以及灵活的图形绘制功能而广受欢迎。

R语言历史

R语言开发环境搭建(以Windows为例)

CRAN:CRAN是”Comprehensive R Archive Network”的缩写,意为“全面的R归档网络”。它是一个由全球众多镜像站点组成的网络,主要负责收集、存储和分发R语言的源代码、可执行文件、包以及文档等资源。

R的下载

下载适合windows的R安装包

只需下载base部分

作为学习目的,下载最新版本即可

::: {.notes}

除了base为R的安装程序, 还有contrib为R附加的扩展软件包下载链接(一般不需要从这里下载), 以及Rtools链接, 是在R中调用C、C++和Fortran程序代码时需要用的编译工具。

:::

也可从这里下载R-4.4.1

R的安装

点击下载的exe进行安装,安装后建议设置环境变量:

  1. 环境变量的配置:我的电脑 – 右键 – 属性 – 高级系统设置
  2. 选择环境变量
  3. 在系统变量中找到Path变量,点击编辑

点击新建,将安装的R目录下的bin文件夹地址粘贴到框中,比如安装地址是:C:\Program Files\R\R-4.4.1\bin,点击确定。

检查R是否安装成功

打开终端,输入R, 进入R交互式终端,即为安装成功

RGui

“GUI”是”Graphical User Interface”的缩写,中文意思是“图形用户界面”。除了命令行的操作方式外,windows上R的base安装包附带一个RGui软件。

RGui

R扩展包的使用

R有一万多个扩展软件包,提供了各种各样的功能。 在安装基本R软件时, 已经伴随安装了一些必要的扩展包, 如base, stats, graphics等, 这些包在启动R时会默认载入, 不需要用户干预。

  1. 安装扩展包
  • 从CRAN安装
#设定清华镜像
options(repos=c(CRAN="https://mirror.tuna.tsinghua.edu.cn/CRAN/"))
# require()方法返回一个bool值,检查要安装的包是否已经被安装
if(!require("sos")){
  install.packages("sos")
}

也可以从RGui设定包镜像

从BioConductor安装

Bioconductor是一个基于 R 语言的生物信息学和计算生物学的软件项目,它提供了一套工具和数据结构,专门用于生物数据的分析和解释。如基因表达分析、基因组注释、数据可视化等。

有些生物信息相关的包只在Bioconductor网站提供。

Bioconductor网站的Packages页面下列出了所有包,截至目前(2024-08-23日)已有2300个包。

从BioConductor安装

Bioconductor 的安装和使用可以通过 R 的包管理器进行,通常需要使用 BiocManager::install() 函数来安装所需的 Bioconductor 包。例如,安装 GenomicRanges 包的命令如下:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("GenomicRanges")

Bioconductor 适合于那些需要进行复杂生物数据分析的研究人员,它提供了强大的工具来处理和分析生物信息学数据。

从github安装包

还有一些扩展包没有在CRAN系统提供, 而是放在了Github网站。 对于这样的包, 安装方法举例如下:

# install.packages("remotes")
remotes::install_github("rladies/praise")

github包必须通过devtools或者remotes安装,所以要先安装remotes 其中rladies是Github网站的某个作者的名称, praise是该作者名下的一个R扩展包。这个包很有意思,可以生成各种称赞的话,虽然没什么用,但展示了R的多样性。

library(praise)
praise()
[1] "You are bedazzling!"

使用扩展包

除了内置包以外,扩展包在安装好以后如果需要调用,一般需要先用library()函数载入运行。例如,载入readr扩展包,并使用其中的read_csv()函数读入一个CSV文件:

library(readr)
d <- read_csv("auto-mpg.csv")
d
# A tibble: 392 × 9
     mpg   cyl displ    hp weight accel    yr origin name                     
   <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl>  <dbl> <chr>                    
 1    18     8   307   130   3504  12      70      1 chevrolet chevelle malibu
 2    15     8   350   165   3693  11.5    70      1 buick skylark 320        
 3    18     8   318   150   3436  11      70      1 plymouth satellite       
 4    16     8   304   150   3433  12      70      1 amc rebel sst            
 5    17     8   302   140   3449  10.5    70      1 ford torino              
 6    15     8   429   198   4341  10      70      1 ford galaxie 500         
 7    14     8   454   220   4354   9      70      1 chevrolet impala         
 8    14     8   440   215   4312   8.5    70      1 plymouth fury iii        
 9    14     8   455   225   4425  10      70      1 pontiac catalina         
10    15     8   390   190   3850   8.5    70      1 amc ambassador dpl       
# ℹ 382 more rows
  • 两个扩展包中的函数名字有冲突时, 应该使用“扩展包名::函数名()”这种语法,如:
d <- readr::read_csv("auto-mpg.csv")

更新扩展包

在命令行中,可用update.package()命令更新本地安装的所有有新版本的CRAN扩展包

options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/"))
update.packages(checkBuilt=TRUE, ask=FALSE)

R Studio软件

RStudio是一个强大的集成开发环境(IDE),专门为R语言编程和数据分析设计。它提供了代码编辑、运行、调试、项目管理、可视化和版本控制等多种功能,支持R脚本的编写、R包的安装和管理,以及交互式R命令的执行。RStudio通过其直观的用户界面和丰富的功能,极大地提高了R语言用户的工作效率,是数据科学家、统计学家和研究人员进行数据分析和统计建模的首选工具之一。

R Studio安装

R Studio只是一个IDE(集成开发环境,Integrated Development Environment)。类似Java的IDEA和.NET的Visual Studio。在安装R Studio之前必须确保已经安装了R。

R studio下载地址

如果上面网站打不开,也可从这里下载

R Studio设置

设置包镜像:Tools → Global Options → packages → Change

R Studio设置

设置主题色和字体:Tools → Global Options → Appearence

项目

用R和RStudio进行研究和数据分析, 每个研究问题应该单独建立一个文件夹(目录)。该问题的所有数据、程序都放在对应的文件夹中。

在RStudio中, 用“File – New Project – Existing Directory”选中该问题的目录, 建立一个新的“项目”(project)。

再次进入RStudio后, 用菜单“File – Recent Projects”找到已有的项目打开, 然后就可以针对该项目进行分析了。 这样分项目进行研究的好处是, 不同项目的可以使用同名的文件而不会有冲突, 程序中用到某个文件时, 只需要写文件名而不需要写文件所在的目录。

一个项目还可以有项目本身的一些特殊设置, 用“Tools – Project Options”菜单打开设置。

运行程序

  1. 在命令行直接输入命令运行
  2. 整体运行:点击源代码窗口右上角的“Source”按钮即可整体运行所有代码
  3. 局部运行:选中某段代码后,点击源代码窗口右上角的“Run”按钮,或者“Ctrl+Enter”键即可运行这段代码

课堂练习

将下面的代码在R Studio中敲一下(看不懂没关系),并且逐行运行,看看输出的结果都是什么?

x <- 1+2
x

col <- c(1,2,3,4,5,6,7,8,9)
col


# 创建一个包含随机数的数据框
random_df <- data.frame(
  Column1 = runif(10, min = 1, max = 100),  # 均匀分布的随机数
  Column2 = rnorm(10, mean = 50, sd = 10),  # 正态分布的随机数
  Column3 = sample(1:100, 10, replace = TRUE),  # 随机抽样
  Column4 = rpois(10, lambda = 5),  # 泊松分布的随机数
  Column5 = rbinom(10, size = 1, prob = 0.5)  # 二项分布的随机数
)

# 查看数据框
print(random_df)

# 查看数据框的结构
str(random_df)

# 计算每列的摘要统计
summary(random_df)

# 绘制 Column1 的直方图
hist(random_df$Column2, main = "Histogram of Column1", xlab = "Column1")

# 绘制 Column1 和 Column2 的散点图
plot(random_df$Column4, random_df$Column2, main = "Scatterplot of Column1 vs Column2", xlab = "Column1", ylab = "Column2")

R Studio 使用说明书

R Studio Cheat Sheet下载连接

Qmd

QMD是Quarto格式文件的一种扩展名,Quarto是由原RStudio团队开发的开源软件,它支持将包含R、Python、Julia、Observable JS源程序的markdown文件在运行后转换为多种输出格式。(扩展名为 .qmd)

在RStudio中,点击菜单栏File→ New File → Quarto Document/Presentation 创建QMD文件

Qmd

  • Document: 使用markdown格式创建排版整齐的html、PDF或者Word文件,适合记录笔记、技术博客甚至写书
  • Presentation:使用markdown格式创建演示文稿,本文档就是用这个模式创建的
  • Interactive:使用markdown格式创建交互网页

Qmd

Qmd文件编写采用标准Markdown语法,最为特殊的是,其中的代码能够直接执行并输出结果