第三节 R软件的应用
本节介绍了使用基本数据查看数据的一些基本方法统计摘要和图表。这些基础知识将贯穿本书的全部内容。
一、R中的数据汇总函数
表2-14列出了R中用于汇总数据的许多基本功能。请注意,通常函数名称是你期望最常用的名称,因为R被设计为相当直观的形式。例如,查找数据向量x的平均值。对于表2-14中未列出的功能,请尝试帮助。apropos()函数与预期名称的一部分一起查找确切的函数调用方法。这可能会出现你期望的结果。表2-14中的大部分函数都可以没有附加参数,并且可用于数据向量,矩阵或数据框架。
表2-14 R中的一些数据汇总函数
函数名称 |
功能 |
sum(x) |
将x中的元素相加 |
prod(x) |
x中元素的乘积 |
max(x) |
x中的最大元素 |
min(x) |
x中的最小元素 |
range(x) |
x中元素的范围(最小值到最大值) |
length(x) |
x中的元素数量 |
mean(x) |
x中元素的平均值 |
median(x) |
x中的元素中位数(中间值) |
var(x) |
x中元素的方差 |
sd(x) |
x中元素的标准偏差 |
cor(x,y) |
x和y之间的相关性 |
quantile(x,p) |
x的第p分位数 |
cov(x,y) |
x和y之间的协方差 |
让我们用一个例子来应用其中的一些函数。
>x<-c(0.5,0.2,0.24,0.12,0.3,0.12,0.2,0.13,0.12,0.12,0.32,0.19)
> sum(x)
[1] 2.56
> prod(x)
[1] 2.360122e-09
> max(x)
[1] 0.5
> min(x)
[1] 0.12
> range(x)
[1] 0.12 0.50
> length(x)
[1] 12
> mean(x)
[1] 0.2133333
> median(x)
[1] 0.195
> var(x)
[1] 0.01313333
> sd(x)
[1] 0.1146008
通常,将使用这些基本的描述性函数作为其他公式的一部分。例如,标准偏差(假设我们不知道它有自己的函数)是方差的平方根,可以计算为:
> sd<-var(x)^0.5
> sd
[1] 0.1146008
假设我们有一种分解蛋白质的酶,我们将称之为蛋白质酶ChopAse。假设我们有三种这种酶,三种公司(化学制造相同的酶,但制备方法不同)。我们对相同的200个氨基酸的蛋白质进行一些分析,消化时间结果如下:
> ChopAse
varietyA timeA varietyBtimeB varietyC timeC
1 a 0.12 b 0.12 c 0.13
2 a 0.13 b 0.14 c 0.12
3 a 0.13 b 0.13 c 0.11
4 a 0.12 b 0.15 c 0.13
5 a 0.13 b 0.13 c 0.12
6 a 0.12 b 0.13 c 0.13
根据这些数据及其呈现方式,很难确定任何数据有关三种Chopase的有用信息以及它们的区别。以下是使用汇总函数得到的可能非常有用的情况,用于查找数据中有趣的趋势。汇总函数同时调用许多的描述函数列在表2-14中,在处理大数据集时可能非常有用,以数据框快速呈现一些基本的描述性统计信息,如Chopase例子:
> summary(ChopAse)
varietyA timeA varietyB timeB varietyC timeC
a:6 Min. :0.120 b:6 Min. :0.1200 c:6 Min. :0.1100
1st Qu.:0.120 1st Qu.:0.1300 1st Qu.:0.1200
Median :0.125 Median :0.1300 Median :0.1250
Mean :0.125 Mean :0.1333 Mean :0.1233
3rd Qu.:0.130 3rd Qu.:0.1375 3rd Qu.:0.1300
Max. :0.130 Max. :0.1500 Max. :0.1300
这给出了一些关于数据集的快速定量信息,而没有打破数据框或做多个函数调用。例如平均值,对于B而言,似乎高于A或C的平均时间。这可能具有统计显著性,并且这种观察可以用于统计数据差异。
二、R的画图技术
通常情况下,呈现正在探索的数据通常用图形格式。R基本包中包含各种图形格式,许多其他包也提供了额外的图形功能。这个部分着重于了解R中的图形环境以及如何实现控制图形环境的功能。
在启动时,R启动一个图形设备驱动器。该驱动程序控制一个特殊的用于显示图形的图形窗口。无需打开此窗口调用图形,使用函数windows()(用于Windows操作系统,Unix上用x11(),Mac操作系统上用macintosh()。在R中使用图形的命令可以分为三种类型:高级绘图函数,低级绘图函数和图形参数函数。我们来看看这些类型的绘图命令。
1.高级绘图函数
高级绘图函数在图形设备上创建一个新图。最简单的高级绘图函数是plot(),如下所示
> x<-c(1,2,3,4,5,6,7,8)
> y<-c(1,2,3,4,5,6,7,8)
>plot(x,y)

这产生了如上的简单图。此函数也适用于只有一个参数,例如:plot(x)。plot是一个通用的函数和有多种可选参数。例如,如果你输入help(plot),您将看到帮助屏幕。例如,假设我们想要制作一个更美观的图,并使用一些可用的参数:
>plot(x,y,xlim=range(0:10),ylim=range(0:10),type='b',main="Xvs Y")

表2-15 部分高级绘图函数
函数名称 |
功能 |
boxplot(x) |
盒须图 |
pie(x) |
圆形饼图 |
hist(x) |
x频率的直方图 |
barplot(x) |
x值的直方图 |
stripchart(x) |
带状图 |
dotchart(x) |
点阵图 |
pairs(x) |
有双变量图 |
plot.ts(x) |
x相对于时间的绘图 |
contour(x,y,z) |
向量x和y,z的轮廓图 |
image(x,y,z) |
与contour图相同,但使用颜色而不是线条 |
persp(x,y,z) |
三维等高线图 |
2.低级绘图函数
低级绘图函数会将附加信息添加到现有绘图中,例如将线添加到现有图。请注意,一些低级绘图函数对应一些高级绘图函数的参数。例如,添加标题可以作为高级函数的参数完成(main=“”等)或作为低级绘图函数(title(main=“”)等)。
我们可以使用低级绘图函数添加图形。我们添加一个标题,一些文字指示线的斜率和连接点的线。
>text(4,6,label="Slope=1")

表2-16列出了附加的低级绘图函数。请注意,大部分这些函数不仅适用于plot(),还适用于其他高级绘图函数。如果你正在处理多个图形窗口,所使用的低级绘图函数将应用于最近使用的图形,所以你应该按照适当的顺序编写你的代码。
表2-16 部分低级绘图函数
函数名称 |
功能 |
points(x,y) |
添加点 |
lines(x,y) |
添加行 |
text(x,y,label =“”) |
在坐标处添加文本 |
segments(x0,y0,x1,y1) |
从点(x0,y0)到点(x1,y1)绘制一条线 |
abline(a,b) |
绘制一条斜线a和一条截距b |
title(“”) |
为主题添加主标题; 也可以添加字幕 |
rug(x) |
在x轴上绘制垂直线 |
rect(x0,y0,x1,y1) |
绘制一个指定的矩形 |
legend(x,y,legend =,...) |
在坐标x,y处添加图例 |
axis() |
添加附加轴到当前图 |
3.图形参数函数
图形参数函数可以分为两类:控制图形窗口和微调图形外观的函数,如窗口的颜色,文字,字体等,其中大部分可以用一个函数来控制,par()的基础包,可用于访问和修改设置图形设备。par()是一个非常重要的图形函数。
par相关的最常见的任务之一就是拆分图形屏幕,在图形设备上显示多个图,可以使用par函数的mfrow或mfcol参数来执行此操作。mfrow和mfcol都需要参数(rows,columns)作为行数和列数。Mfrow按行顺序绘制图(第1行第1列,第1行第2列等),而mfcol按列顺序绘制图(第1行1列,第2行第1列)。图形参数还可以控制图形的显示方式。表2-17列出了一些基本的图形参数。这些参数可以作为par的参数来实现,在这种情况下它们在图形窗口的所有图表中实现,或者作为高级的参数实现低级绘图功能,在这种情况下,它们只影响指定函数。我们来看一个使用来自NCBI碱基对数和序列数据的par函数的例子。
> NCBIdata
Year BasePairs Sequences
1 1982 680338 606
2 1983 2274029 2427
3 1984 3368765 4175
4 1985 5204420 5700
5 1986 9615371 9978
…
20 2001 15849921438 14976310
21 2002 28507990166 22318883
表2-17 部分图形参数
函数名称 |
功能 |
bg |
指定(图形窗口)背景颜色 |
col |
控制符号,轴,标题等的颜色 (col.axis,col.lab,col.title等) |
font |
控制文本样式(0 =正常,1- =斜体,2 =粗体, 3 =粗体斜体) |
lty |
指定线型(1:实线,2:虚线,3:虚线等) |
lwd |
控制线条的宽度 |
cex |
控制文本和符号的大小(cex.axis,cex.lab等) |
pch |
控制符号的类型,提供一个数字从1到25,或“”中的任何字符 |
使用NCBI数据,让我们按年份绘制碱基对,并按年份绘制序列在同一个图形窗口上。
> #Convert Base PairData to Millions
>MBP<-NCBIdata$BasePairs/1000000
> #Convert SequenceData to Thousands
>ThousSeq<-NCBIdata$Sequences/1000
> #Set par to have a2-column (2 graph) setup
> #Use cex to setlabel sizes
>par(mfcol=c(1,2),cex.axis=0.7,cex.lab=1)
> #Plot base pairdata by year
>plot(NCBIdata$Year,MBP,xlab="Year",ylab="BP in Millions",
+ main="Base Pairsby Year")
> #Add line to plot,color blue
>lines(NCBIdata$Year,MBP,col="Blue")
> #Similarily, plotsequence data and line
>plot(NCBIdata$Year,ThousSeq,xlab="Year",ylab="Seq. inThousands",
+ main="Sequencesby Year")
>lines(NCBIdata$Year,ThousSeq,col="red")


