1.1 搭建R环境及常用操作
1.1.1 搭建R环境
打开R语言原生官网速度较慢,建议直接到R镜像站,目前国内有11个镜像站,我最近常用的是北京外国语大学的镜像站,其网址为:
https://mirrors.bfsu.edu.cn/CRAN/
读者可以根据自己的操作系统,下载相应的R语言版本即可(本书采用的是R-4.2.2)。在Windows系统安装R时,可根据系统选择32位或64位版本,建议取消勾选Message Translations。
建议安装在D盘,不要有中文路径,且路径名称不要有空格。
切记:若Windows系统用户名为中文,要先改成英文!
注意,最好保证计算机里有且只有一个版本的R,否则RStudio不会自动关联R,需要手动关联到其中一个R版本。
安装完成后,打开R,界面如图1.1所示。
图1.1 R 4.2.2软件界面
1.安装RStudio
不要直接使用R,建议使用更好用的R语言集成开发环境Rstudio。
下载并安装(或直接下载zip版解压)RStudio之后,RStudio将自动关联已安装的R。打开RStudio,操作界面各窗格及功能简介如图1.2所示。
图1.2 RStudio操作界面
2.一些必要的设置
● 切换安装扩展包的国内镜像源(任选其一),操作界面如图1.3所示。
图1.3 为RStudio设置国内镜像源
Tools -> Global Options… -> Options -> Packages
,单击Change
可修改镜像源,比如本书使用了北京外国语大学镜像源(Beijing Foreign Studies University)。
● 设置保存文件的默认编码方式为UTF-8
,操作界面如图1.4所示。
图1.4 R Studio设置code编码
Tools -> Global Options… -> code -> Saving
,在Default text encoding
框,单击change
,将相关设置修改为UTF-8
。
这样保存出来的各种R文件,都将采用UTF-8
编码,这能够尽量避免含有中文字符的文件在其他计算机上打开显示乱码。
建议顺便再勾选Code -> Display
下的Rainbow parentheses
选项,这样代码中的配对括号将用不同颜色匹配。
另外,还建议在General -> Workspace
菜单下取消勾选“Restore .RData into workspace at startup
”,并将其下的“save workspace to .RData on exit:
”改为“Never
.”,这可以避免每次打开RStudio
都加载之前的内存数据。
1.1.2 常用操作
1.安装包
扩展包(package),简称包。通常R包都来自CRAN,R包的审核比较严格,包的质量相对更有保障。建议使用命令安装R包,以下命令用于安装openxlsx包:
install.packages(“openxlsx”)
openxlsx
为包名,必须要加引号(在R中,单双引号可通用)。
有些包不能自动安装,可以手动从网上搜索并下载.zip
或.tar.gz
文件到本地,再手动安装(不建议手动安装),手动安装可依次单击Tools -> Install Packages
,修改Install from
,然后浏览安装,如图1.5所示。
图1.5 手动安装R包
手动安装包经常容易安装失败,通常是因为没有先安装该包的依赖包,故需要去包的网页查询其依赖包。若确定未安装对应的依赖包,则需要先安装它们。因为这往往又涉及依赖包的依赖包,所以最好不要手动安装包。另外,建议大家尽量用最新版本的R。
GitHub
也是R
包的重要来源,有些作者自己开发的R
包只放在GitHub
,也有很多CRAN R
包的最新开发版位于GitHub
,大家可以先安装devtools
或remotes
包,再通过install_github()
安装GitHub
来源的包:
devtools::install_github(“tidyverse/dplyr”) # 或者
remotes::install_github(“tidyverse/dplyr”)
在以上命令中,::
的前面是包名,这是不单独加载包而使用包中函数的写法。
tidyuerse
是GitHub
用户名,dplyr
为该用户的名为dplyr
的repository
(仓库),也是包名。此外,通过“包名:::”前缀可以访问包的内部函数。注意,不是所有的仓库都是R
包(含有DESCRIPTION
文件是R
包的标志)。
若因为网络等因素,导致直接从GitHub
安装包失败,也可以将整个包文件夹从网页下载下来,解压缩到当前路径(或提供完整路径),再从本地安装:
install.packages(“dplyr-master”, repos=NULL, type=”source”)
另外,在R中生物信息领域自成一派,有专门的包,可以从bioconductor网站获取:
我们需要先安装BiocManager
包,再用install()
函数安装bioconductor
来源的包:
BiocManager::install(“openxlsx”)
实用场景:R包默认安装在 .../R-4.x.x/library
路径下。
你在自己的计算机上搭建好R语言环境,并安装好了很多常用包,然后又想到一台没有R环境、没有联网的计算机上复现代码。
具体方法:你只需要在那台计算机上安装相同版本的R软件,并安装到相同路径下,将新的library
文件夹完全替换为自己计算机里的library
文件夹即可1,这样运行起R代码跟自己计算机的效果没有任何区别。
[1] 可以用添加压缩包再解压的方式,这样速度能快一些。
2.加载包
library(openxlsx)
3.更新包
update.packages(“openxlsx”)
update.packages() # 更新所有包
4.删除包
remove.packages(“openxlsx”)
5.获取或设置当前路径
getwd()
setwd(“D:/R-4.2.2/tests”)
特别注意:
路径中的“\”必须用“/ ”或“\\”代替。
提示:关于更新R版本和更新包,笔者一般是紧跟最新R版本,顺便重新安装一遍所有包。为了省事,笔者是将所有自己常用包的安装命令(install.package(“...”)
)都放在一个R脚本中,并选择国内镜像,再全部运行即可。
6.赋值
R标准语法中赋值不是用 =,而是 <- 或 ->,代码如下:
x <- 1:10
x + 2
## [1] 3 4 5 6 7 8 9 10 11 12
R也允许用“=
”赋值,建议用更现代和简洁的“=
”赋值。
在R中,为一行代码添加注释语句用 #。
7.基本运算
● 数学运算
❏ + - * /
、^
(求幂)、%%
(按模求余[2])、%/%
(整除)。
[2] 可以对小数按模求余,例如5.4 %% 2.3
结果为0.8
。
● 比较运算
❏ >
、
<
、
>=
、
<=
、
==
、
!=
;
❏ identical(x,y)
—判断两个对象是否严格相等;
❏ all.equal(x,y)
或dplyr::near(x,y)
—判断两个浮点数是否近似相等(误差为1.5e−8
)。
0L == 0
## [1] TRUE
identical(0L, 0)
## [1] FALSE
sqrt(2)^2 == 2
## [1] FALSE
identical(sqrt(2)^2, 2)
## [1] FALSE
all.equal(sqrt(2)^2, 2)
## [1] TRUE
dplyr::near(sqrt(2)^2, 2)
## [1] TRUE
● 逻辑运算
❏ |
(或)、
&
(与)、
!
(非)、
xor()
(异或)
&&
和||
是短路运算,即遇到TRUE(FALSE)
则返回TRUE(FALSE)
而不继续往下计算;
而&
和|
是向量运算符,对向量中所有元素分别进行运算。
8.基本数据类型
● R的基本数据类型
❏ numeric
— 数值型,又分为integer
(整数型)和double
(浮点型);
❏ logical
— 逻辑型,只有TRUE
和FALSE
,或T
和F
;
❏ character
— 字符型,引号[3]括起来的若干字符。
[3] 在R中,单双引号通用。
● R中用NA
表示缺失值,NULL
表示空值,NaN
表示非数,Inf
表示无穷大。
● 对于R中的大多数函数,NA
具有“传染性”,即NA
参与的运算,结果会变成NA
。R自带的很多函数都提供na.rm参数设置,以便于设定计算时是否忽略缺失值。
❏ 特别要注意:判断x
是否为NA
,不是用x==NA
,而是用is.na(x)
。
● 可用函数class(x) / typeof(x) / mode(x)
查看对象x
的类型。
❏ 在展现数据的细节方面,mode()
性能最弱,class()
性能一般,typeof()
性能最强。
❏ str(x)
可以显示对象x
的结构。
9.保存和载入数据
save(x, file = “data/dat.Rda”)
load(“data/dat.Rda”)
关于相对路径与绝对路径
编程中的文件路径,可以用绝对路径也可以用相对路径。
绝对路径是从盘符开始的完整路径,比如E
:/R
语言
/data/a123.csv
。
相对路径是相对于当前路径的路径,因为通常操作的文件都是在当前路径,那么“从盘符到当前路径”这部分是大家所共有的,所以可以省略不写,只写从当前路径再往下的路径即可。比如,当前文件夹E:/R
语言中有data
文件夹,里面有数据文件a123.csv
,要想访问到它的路径,只需写data/a123.csv
。
10.清屏和清除内存变量
按“Ctrl + L”组合键或单击命令窗口右上角的“小刷子”图标可对命令窗口清屏。
若要清除当前变量,使用以下命令:
rm(x) # 清除变量x
rm(list = ls(all = TRUE)) # 清除所有当前变量
注意:
单击Environment窗口的“小刷子”图标也可以清除所有当前变量。
11.获取帮助
学习编程语言最好的资料就是帮助。
● 函数帮助
命令窗口执行:
?plot
则在help窗口打开plot()
函数的帮助:包括函数来自哪个包、函数的描述、参数说明、更多解释、实例等。
● 在线帮助(需联网)
若想根据某算法的名字或关键词,搜索哪个包能实现该算法:
RSiteSearch(“network”)
● 其他主要网络资源
R官方镜像站(例如本书作者所使用的就是北京外国语大学的镜像站https://mirrors.bfsu. edu.cn/CRAN/),镜像站下的各种资源,建议读者去详细了解。比如,常用的是包的帮助文档:在镜像站,单击左侧的Packages,再单击“sort by name”,则出现所有可用的CRAN包列表。单击某个包名,则进入该包的介绍页,比如tidyverse包的官方介绍页如图1.6所示。
图1.6 tidyverse包的官方介绍页
Reference manual是参考手册,包含该包所有函数和自带数据集的说明,供查阅使用;Vignettes是包的作者写的使用文档,它是该包的最佳学习资料。
在使用R语言的过程中遇到各种问题,建议将报错信息设置为英文:Sys.setenv(LANGUAGE = "en")
, 建议用bing
国际版搜索报错信息,更容易找到答案。另外,GitHub
是丰富的程序代码仓库,在bing
搜索时,加上GitHub
关键词,可能有意想不到的收获。
其他开放的R社区如下:
● Stack overflow;
● R-Bloggers;
● Tidyverse;
● Rstudio;
● 统计之都。
12.R Script与R Project
R脚本是单个可执行的R代码文件,后缀名为 .R,单击New File按钮,选择R Script,或使用快捷键(Ctrl + Shift + N),可以新建R脚本。
R脚本中都是可执行的R代码和注释,选中部分代码,单击Run按钮即可运行选中的代码。
R项目(Project)是完成某个项目或任务的一系列文件的合集(文件夹),包括数据文件、若干R脚本及其他附件,还包含一个 *.Rproj
文件;
强烈建议读者使用 R 项目和相对路径,这样能系统地管理服务于共同目的的一系列文件,可以方便移动文件,而不需要做任何有关路径的代码修改就能成功运行。
创建R项目:单击Create a Project按钮,进入创建R Project向导,如图1.7所示。
图1.7 创建R Project向导
若在某个已存在的文件夹下创建项目,则选择Existing Directory;若需要新建文件夹创建项目,则选择New Directory。
创建完成后,在文件夹下出现一个 *.Rproj
文件,双击它(关联RStudio打开),则进入该R项目,可以完成访问、编辑文件和运行脚本等操作。
13.R Markdown
后缀名为 .Rmd
的交互式文档,是markdown
语法与R脚本的结合,可以将可执行的R代码和不可执行的文字叙述,融为一个文件。
单击New File按钮,选择R Markdown即可创建,建议优先使用自带的模板和来自网络的现成模板。
R Markdown适合编写包含R语言代码的学习笔记、演示文档、论文等,可以生成docx
、
pptx
、
html
、
pdf
等多种文档格式。更多有关R Markdown的内容将在第5章展开讨论。
此外,近期RStudio推出了新一代文档沟通工具Quarto,其用法与R Markdown基本一致,具体使用方法请参阅官方文档。