R语言毕竟是最强大的编程语言,可实现统计和数据可视化的功能。在之前我们专门介绍过几种热图绘制工具,其实在生信领域中大多数热图真的可以直接用R语言就能实现。
R是一种区分大小写的解释型语言。我们可以在命令提示符(>)后每次输入并执行一条命令,或者一次性执行写在脚本文件中的一组命令。R中有多种数据类型,包括向量、矩阵、数据框和列表。R中的多数功能是由程序内置函数和用户自编函数提供的,一次交互式会话期间的所有数据对象都被保存在内存中。一些基本函数是默认直接可用,其他高级函数则包含于按需加载的程序包中。
R语句由函数和赋值构成。R使用<-,而不是传统的=作为赋值符号。
今天小编就先从R语言基础,即R的安装、R的载入和数据导入开始讲起,往后将继续介绍如何用R语言做深入的数据分析。
安装R和RStudio
R可在CRAN上免费下载。建议先安装R包,再安装RStudio。Linux、Mac OSX和Windows都有相应编译好的二进制版本,根据你选择平台的安装说明进行安装即可。RStudio是目前最受欢迎的R集成开发环境,体验效果极佳。而且RStudio上面提供了很多R学习资源,可点击菜单栏查看免费获取。
R提供了很多种功能,而且这些功能通过可选模块的下载和安装来实现的。这些包提供了横跨各种领域的功能,包括分析地理数据、处理蛋白质质谱等。
那什么是包呢?包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。库library中存储了很多包。函数.libPaths()可显示库所在位置,函数library()则可显示库中有哪些包。
R自带了一系列默认包(base、datasets、utils、grDevices、graphics、stats、methods),它们提供了很多种默认函数和数据集。安装好后,它们必须被载入到会话中才能用。命令search()可显示哪些包已加载并可使用。
安装R包
R包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。其实在安装R软件时,R会自动安装一些基础R包,基础R包提供了很多默认函数和数据集,其他大多数R包需要手动安装,例如ggplot2包等。第一次安装一个包,使用命令install.packages()即可。如果不加参数执行install.packages()将显示一个CRAN镜像站点的列表,选择其中一个镜像站点之后,将看到所有可用包的列表,选择其中的一个包即可进行下载和安装。
R包可从三种途径安装。
CRAN
安装R包可以从CRAN上安装,只需在命令行输入代码install. packages(“package_name”)即可。
例如,安装readr包,可以这样输入
Install.packages(“readr”)
Bioconductor
在Bioconductor上安装R包。Bioconductor数据库存储了专用于生信领域的R包。在Bioconductor上安装R包可参考其官网的安装方法,操作跟CRAN上类似。
例如从Bioconductor安装用于分析基因组数据的R/Bioconductor包limma,可以输入:
Source(https://bioconductor.org/biocLite.R)
biocLite(“limma”)
也可以使用Biocmanager:install(“limma”)这种形式
Github
另外可从github安装R包,github适用于所有软件开发和数据分析的资源库,以便共享你的包。
对于github上安装一个包,首先应安装devtools包在你电脑上。例如可输入下面代码安装最新版本的survminer的R包
install.packages(“devtools”)
devtools::install_github(“kassambara/survminer”)
R包的载入
包的安装就是从某个CRAN镜像站点下载它并将其放入库中的过程。要在R会话中使用包,还需使用library()命令载入这个包。载入一个包后,就可用一系列新的函数和数据集了。包提供了演示性的小型数据集和示例代码,能让我们尝试这些新功能。
R与数据导入
当你获取到来自多种数据源和数据格式的数据时,R就提供了适用范围广泛的数据导入工具。R可从键盘、文本文件、Microsoft Excel和Access、统计软件、特殊格式文件,及多种关系型数据库中导入数据。
使用键盘输入数据
R中的函数edit()自动调用一个允许手动输入数据的文本编辑器。具体步骤如下:
创建一个空的数据框,其中变量名称和变量模式与理想中的最终数据集一致。
针对这个数据对象调用文本编辑器,输入你的数据,将结果保存回这个数据对象中。
例如,我们创建一个名为mydata的数据框,它有三个变量:age(数值型)、gender(字符型)、weight(数值型),我们再将调用文本编辑器,键入数据,最后保存结果。
mydata <- data.frame(age=numeric(0) ,
gender=character (0), weight=numeric (0) )
mydata <- edit (mydata)
类似于age=numeric(0)的赋值语句将创建一个指定模式但不含实际数据的变量。edit()函数其实是在对象的一个副本上进行操作。
从带分隔符的文本文件导入数据
我们可用read.table()从带分隔符的文本文件中导入数据。此函数可读入一个表格格式的文件并将其保存为一个数据框。
mydataframe <- read.table(file, header=logical_value,
sep=”delimiter”, row.names=”name”)
其中,file是一个带分隔符的ASCII文本文件,header是一个表明首行是否包含了变量名的逻辑值(TRUE或FALSE),sep用来指定分隔数据的分隔符,row.names是一个可选参数,用以指定一个或多个表示行标识符的变量。
grades <- read.table(“studentgrades.csv”, header=TRUE, sep=”,”,
row.names=”STUDENTID”)
函数read.table()还拥有很多微调数据导入方式的追加选项,如quote参数用于控制导入的信息是否需要被双引号引用,dec参数控制导入数据的小数点后位数等,某些情况下导入被空格分离的字符串如“Bcellresting”,会被自动转化为“B.cell.resting”形式,这种情况下可设置Check.names参数。一般而言,txt文件以制表符“\t”作为分隔符,与excel的csv格式中的逗号分隔稍有不同。
导入Excel数据
读取一个Excel文件夹的最好方式,就是在Excel中将其导出为一个逗号分隔文件(csv),然后再将其导入R中。在Windows系统里,可用RODBC包来方位Excel文件。
首先,下载并安装RODBC包。
install.packages(“RODBC”)
可使用下面代码导入数据:
library(RODBC)
channel <- odbcConnectExcel (“myfile.xls”)
mydataframe <- sqlFetch(channel, “mysheet”)
odbcClose(channel)
其中,myfile.xls是一个Excel文件,mysheet是要从这个工作簿中读取工作表的名称,channel是一个由odbcConnectExcel()返回的RODBC连接对象,mydataframe是返回的数据框。RODBC也可用于从Access中导入数据。
导入SPSS数据
SPSS数据集可通过foreign包中的函数read.spss()导入到R中,也可用Hmisc包中的spss.get()函数。函数spss.get()是对read.spss()的一个封装,它可自动设置后者的很多参数。
首先,下载并安装Hmisc包
install.package(“Hmisc”)
然后使用以下代码导入数据:
library(Hmisc)
mydataframe <- spss.get (“mydata.sav”, use.value.labels=TRUE)
这段代码中,mydata.sav是要导入的SPSS数据文件,use.value.labels=TRUE表示让函数将带有值标签的变量导入为R中水平对应相同的因子,mydataframe是导入后的R数据框。
导入SAS数据
R中设计了若干用来导入SAS数据集的函数,包括foreign包中的read.ssd()和Hmisc包中的sas.get()。
我们可以在SAS中使用PROC EXPORT将SAS数据集保存为一个逗号分隔的文本文件,然后将导出的文件读取到R中。如下所示:
SAS程序中:
proc export data=mydata
outfile=”mydata.csv”
dbms=csv;
run;
R程序:
Mydata <- read.table(“mydata.csv”, header=TRUE, sep=”,”)
导入STATA数据
将Stata数据导入R的代码类似于:
Library(foreign)
Mydataframe <- read.dta (“mydata.dta”)
R与数据导出
除了可以把数据导入R中,还可从R中把数据导出,以便保存数据或在外部程序中使用。那怎样从R中导出数据呢?
符号分隔文本文件
可用write.table()函数将R对象输出到符号分隔文件中。函数使用方法是:
write.table(x, outfile, sep=delimiter, quote=TRUE, na=”NA”)
其中x是输出对象,outfile是目标文件。例如,
write.table(mydata, “mydata.txt”, sep=”,”)
将mydata数据集输出到当前目录下逗号分隔的mydata.txt文件。用路径将输出文件保存到任何地方。用sep=”\t”替换sep=”,”,数据就会保存到制表符分隔的文件中。默认情况下,字符串是放在双引号中,缺失值用NA表示。
Excel表格
xlsx包中的write.xlsx()函数可将R数据框写入到Excel文件中。使用方法是
library(xlsx)
write.xlsx(x, outfile, col.Names=TRUE, row.names=TRUE,
sheetName=”Sheet 1”, append=FALSE)
例如,
library(xlsx)
write.xlsx(mydata, “mydata.xlsx”)
将mydata数据框保存到当前目录下的Excel文件mydata.xlsx的工作表中(默认为Sheet 1)。在这种情况下,数据集的变量名称被作为电子表格头部,行名称会放在电子表格的第一列。函数会覆盖已存在的mydata.xlsx文件。
统计学程序
foreign包中的write.foreign()可将数据框导出到外部统计软件,会创建两个文件,一个是保存数据的文本文件,另一个是指导外部统计软件导入数据的编码文件。
write.foreign(dataframe, datafile, codefile, package=package)
例如,看下面这段代码:
library(foreign)
write.foreign(mydata, “mydata.txt”, “mycode.sps”, package=”SPSS”)
将mydata数据框导出到当前目录的纯文本文件mydata.txt中,同时还会生成一个用于读取该文本文件的SPSS程序mycode.sps。
Package参数的其他值还有“SAS”和“Stata”
结语
今天跟大家介绍了R的安装、R的载入和数据导入导出,这些还是最基础的东西,其实安装R和载入R包并不复杂,关键就在于数据处理分析。数据的准备可能是数据分析中最具挑战性的任务之一,R提供了丰富函数用以访问外部数据,包括统计软件、数据库等的数据,换言之我们做统计学分析和绘图都需要使用R语言,所以我们对R语言的运用一定要了如指掌,对于生信小白来说,平时没事做,就不要打王者,就把娱乐时间拿来反复练习运用R语言。