R语言学习之数量生态学笔记(一)

参考书:《Numerical Ecology with R》-Daniel Borcard -F-P


1、基础函数(数据Doubs鱼类数据)


table统计数据出现的频次

> z

 [1] 1 1 1 2 5 5 7 7 7 7 7 7

> table(z)

z

1 2 5 7 

3 1 2 6 


unlist函数的作用,就是将list结构的数据,变成非list的数据,即将list数据变成字符串向量或者数字向量的形式。不以列表形式展示

> j<-list(c(1,2,3),5)

> j

[[1]]

[1] 1 2 3

[[2]]

[1] 5

> unlist(j)

[1] 1 2 3 5


nrow 提取数据总行数


ncol 提取数据总列数


head 只展示数据前几行


定义数据目标数据,对于大数据,只需要显示前几行或者前几列时如spe数据

spe( 1:5 , 1:10 ) 表示显示数据spe前五行前五列


dim 提取数据框维度(行数列数)

> dim(spe)

[1] 30 27


colnames 提取数据列数


rownames 提取数据行数


summary 以列为单位对列变量进行描述性统计

> summary(spa)

       X                Y         

 Min.   :  0.00   Min.   : 20.00  

 1st Qu.: 80.94   1st Qu.: 42.13  

 Median : 96.56   Median : 73.14  

 Mean   : 97.58   Mean   : 66.57  

 3rd Qu.:130.03   3rd Qu.: 89.13  

 Max.   :159.44   Max.   :105.43  


 range 数据范围 

range(spe)

[1] 0 5


barplot  柱状图

 barplot(height, width = 1, space = NULL,names.arg = NULL, legend.text = NULL,beside = FALSE,horiz = FALSE, density = NULL, angle =45,col = NULL, border =par("fg"),main = NULL, sub = NULL, xlab = NULL,ylab = NULL,xlim = NULL, ylim = NULL, xpd = TRUE,log = "",axes = TRUE, axisnames = TRUE, cex.axis=par("cex.axis"),cex.names=par("cex.axis"), inside = TRUE, plot = TRUE, axis.lty =0, offset = 0, add = FALSE, args.legend = NULL, ...)

density:底纹的密度。默认值为NULL

angle:设置底纹的斜率

names.arg:边框的名字

xlim和ylim:设置图形x轴与y轴的范围。

xlab和ylab:设置x轴与y轴的lable

axes:逻辑参数。设置图形是否显示x轴或y轴。(如果TRUE,垂直(或水平,horiz如果是真实的)轴绘制)

las:与axes参数相对应,表示坐标轴label的方向(0和1)

plot:逻辑参数。设置是否显示条形图。

beside:逻辑参数。如果FALSE,那么将绘画堆叠式的条形;如果是TRUE,将绘画并列式条形。

cex.axis:设置坐标轴数值的膨胀率。比如cex.axis=1.5

cex.names: 设置条形标签(barlabels)的膨胀率。比如cex.axis=1.5

col: 设置条形底纹或者填充颜色。

gray:由白色到黑色的gray(0:8 / 8)0为纯白,1为纯黑,这儿分了8个程度

border:设置条形边缘颜色。如果设置为NA,则消除了边缘

width:设置条形的宽度

axis.lty:设置x轴的类型(类似lty)。默认axis.lty=0

names.arg:设置条形标签(barlabels)。

horiz:逻辑参数。设置图形是水平或是垂直

space:设置各个条形间的宽度。相当于各个条形宽度的一部分。

axisnames:逻辑参数。设置是否显示条形标签

xaxt= "n" 去除横坐标

yaxt =  "n"去除纵坐标

legend.text = 是添加文本

args.legend 文本的位置topright,topleft,(args.legend = list(x = "topleft", cex=2))

add = “TRUE”将barplot加在目前已经有的图上

添加坐标轴的标签

axis(side=1, c(-2, 0, 2),tcl=-0.2, labels=FALSE)#添加坐标轴,slide=1代表横坐标,slide=2代表纵坐标,tcl的值代表添加坐标轴的那个刻度的长度,

图例函数legend()主要参数解释:

除了利用x,y设置图例的坐标外,用”topleft”, "center","bottomright"等设置位置非常方便。ncol设置图例的列数,  horiz设置图例的排列方向。常有的参数还有col,lty,pch

 legend(x,y = NULL, legend, fill = NULL, col = par("col"),border="black", lty, lwd, pch,angle = 45, density = NULL, bty = "o", bg =par("bg"),box.lwd = par("lwd"), box.lty= par("lty"), box.col = par("fg"),pt.bg= NA, cex = 1, pt.cex = cex, pt.lwd = lwd,xjust = 0, yjust = 1, x.intersp = 1,y.intersp = 1,adj = c(0, 0.5), text.width = NULL,text.col = par("col"),merge = do.lines && has.pch,trace = FALSE,plot = TRUE, ncol = 1, horiz = FALSE,title = NULL, inset = 0, xpd, title.col = text.col) 

x和y:设置图例在图片上的位置。

title:设置图例标题。(在图例盒子里)。

title.col:设置图例标题的颜色。

text.col: 设置图例中文本文字的颜色。比如说:text.col=’red’。

text.width: 设置图例文本文字的宽度。宽度比例与x轴相关。

trace:逻辑参数。如果设置为TRUE,那么显示出函数计算过程。

fill: 设置一个填充了指定颜色的盒子放在文本旁边。

border:指定该盒子的边缘颜色。

lty与lwd:设置图例中线条的类型以及粗细。

density与angle:设置图例中小盒子的底纹密度和角度。

bty:设置图例盒子的类型。只能选择o或者n。

bg:设置图例盒子的背景颜色。

box.lty/box.lwd/box.col:设置图例盒子边缘线类型,粗细,颜色。

pt.bg:设置图例中点的背景颜色。

pt.cex:设置点的膨胀率。

pt.lwd:设置点的边缘线的粗细。

xjust与yjust:上下调整图例的位置。

x.intersp与y.intersp:设置图例盒子空间大小。

ncol:设置图例显示的列数。

horiz:设置水平方式显示图例。默认为垂直方式显示

hist(): breaks设置每个柱的间距;freq柱图表示count或frequency;polt设置是否画图;density和angle可以设置柱上的斜线;axes设置是否需要画坐标轴; cor设置柱图的颜色;border设置柱图边界的颜色;xlim设置横轴范围;ylim设置纵轴范围。

layout():mat用矩阵设置窗口的划分,矩阵的0元素表示该位置不画图,非0元素必须包括从1开始的连续的整数值,比如:1……N,按非0元素的大小设置图形的顺序。widths用来设置窗口不同列的宽度,heights设置不同行的高度。par()的mfcol,和mfrow参数也有类似layout的功能,不过相对layout就逊色多了。

par():mar设置图离四个边缘的距离;bg设置背景颜色;xaxt和yaxt设置坐标轴标签的类型(=”n”表示不画轴标签);xlim和ylim设置坐标轴的范围。

axis():las设置坐标轴标签的方式(水平,垂直……)。

mtext():为四个坐标轴添加标签。

text():在给定坐标的位置写字。

lines():lty设置线的类型;lwd设置线的宽度。

points():pch设置点的类型。

heatmap():Rowv和Colv设置是否需要按行或列聚类;scale设置是否需要按行或列标准化;na.rm设置是否移去NA;RowSideColors和ColSideColors可以在行或列边缘添加颜色;keep.dendro设置是否画聚类树。

dendrogram():'nodePar'和'edgePar'都是list,可以方便的设置节点和边的各种属性,如:颜色,样式,宽度,标签……。


plot 散点图

plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, ...)

主要参数的含义如下:

(1)type为一个字符的字符串,用于给定绘图的类型,可选的值如下:

"p":绘点(默认值);

"l":绘制线;

"b":同时绘制点和线;

"c":仅绘制参数"b"所示的线;

"o":同时绘制点和线,且线穿过点;

"h":绘制出点到横坐标轴的垂直线;

"s":绘制出阶梯图(先横后纵);

"S":绘制出阶梯图(先纵后竖);

"n":作空图。

(2)main参数 字符串,给出图形的标题;

(3)sub参数 字符串,给出图形的子标题;

(4)xlab 和 ylab参数 字符串,用于给出x轴和y轴的标签。

(5)xlim 和 ylim参数 都是二维向量,分别表示x轴和y轴的取值范围。

1、符号和线条

    pch:指定绘制点所使用的符号,取值范围[0, 24],其中4是“差号”,20是“点”

    cex:指定符号的大小。cex是一个数值,表示pch的倍数,默认是1.5倍

    lty:指定线条类型。lty=1代表实线,2至6都是虚线,虚的程度不一样

    lwd:指定线条宽度,默认值为lwd=1,可以适当修改1.5倍、2倍等

2、颜色

    col:默认绘图颜色。某些函数(如lines、pie)可以接受一个含有颜色值的向量,并自动循环使用。

           例如:col=c("red", "blue")需要绘制三条线,那么三条颜色分别为red、blue、red

   col.axis:坐标轴刻度文字的颜色,不是坐标轴的颜色

    col.lab:坐标轴标签(名称)的颜色

    col.main:标题的颜色

    col.sub:副标题的颜色

    fg:图形的前景色

    bg:图形的背景色( 先要用pch指定形状)

3、文本属性(用来指定字号、字体、字样)

    cex.axis:坐标轴刻度文字的缩放倍数

    cex.lab:坐标轴标签(名称)的缩放倍数

    cex.main:标题的缩放倍数

    cex.sub:副标题的缩放倍数

    font:整数。用于指定字体样式。1常规、2粗体、3斜体、4粗斜体

4、图形尺寸与图形边界

    pin:以英寸表示图形的宽和高

    mai:以数值向量表示边界大小,顺序为"下、左、上、右",单位为英寸

    mar:以数值向量表示边界大小,顺序为"下、左、上、右",单位为英分,默认值c(5, 4, 4, 2)+0.1

5、标题

    可以使用函数title,格式为:

        title(main = " ", sub = " ", xlab = " ",  ylab = " ")

   也可以直接把title里面的参数直接放在plot()里面

6、坐标轴

     axes=FALSE  将禁用全部坐标轴,框架和刻度全部没有了

     xaxt="n"   禁用x轴的刻度线

     yaxt="n"   禁用y轴的刻度线

     asp 限定 y/x aspect 比率

也可以通过axis函数自定义axis(……)    

     side:一个整数。表示在图形的哪边绘制坐标轴(1=下,2=左,3=上,4=右)

    at:一个数值向量,表示需要绘制刻度线的位

    labels:一个字符型向量(也可以是数值型),表示刻度线旁边的文字标签(刻度值),如果整个不写,则直接使用at的值

     col:线条和刻度的颜色

     lty:线条类型

     las:标签的字体是否平行(=0)或者垂直(=2)坐标轴

     tck:刻度线的长度(默认值-0.01,负值表示刻度在图形外,正值表示刻度在图形内侧)

7、参考线

             abline(h=yvalues, v=xvalues)

            例如:plot(1:10)

             abline(h = c(1, 5))  #则在y=1和5处各有一条水平线

            abline(v = c(1, 5))  #则在x=1和5处各有一条垂直线

lines 给散点图连接直线

text 坐标轴中添加文字,格式:text(x,y,"内容",cex = ,col= )


par 绘图窗口分成多个区域

par(mfrow=c(a,b)):分成a行b列


apply 

例子:

b为:

      first second

one      1      4

two      2      5

three    3      6

apply(b,1,sum)

上面的指令代表对矩阵b进行行计算,分别对每一行进行求和。函数涉及了三个参数:

第一个参数是指要参与计算的矩阵;

第二个参数是指按行计算还是按列计算,1——表示按行计算,2——按列计算;

第三个参数是指具体的运算参数。

sort 数据按照升序排列


hist  立方图

x: 用于绘制直方图的数据,该参数的值为一个向量

break : 该参数的指定格式有很多种

第一种: 指定一个向量,给出不同的断点

breaks = c(0.5, 1.5, 2.5, 3.5)

第二种:指定分隔好的区间的个数,会根据区间个数自动去计算区间的大小

breaks = seq(0,30,by = 5)

freq: 逻辑值,默认值为TRUE , y轴显示的是每个区间内的频数,FALSE, 代表显示的是频率(= 频数/ 总数)

probability : 逻辑值,和 freq 参数的作用正好相反,TRUE 代表频率, FALSE 代表频数

 labels: 显示在每个柱子上方的标签,

axes : 逻辑值,是否显示轴线

 col : 柱子的填充色

border : 柱子的边框的颜色,默认为black, 当border = NA 时, 代表没有边框

densitty 和 angle , 用线条填充柱子


seq  生成一系列的数值

seq(a,b,c)

开始数值为a,结束数值为b,步长c,无步长默认为1


+, -, * , / 矩阵的四则运算,对应位置的元素进行运算要求矩阵的维数必须相同

t() 矩阵的行列转置

colSums() 分别对矩阵的每一列进行求和

rowSums() 分别对矩阵的每一行进行求和

colMeans() 分别对矩阵的每一列进行求平均值

rowMeans() 分别对矩阵的每一行进行求平均值

det() 解方程的行列式

crossprod() 解两个矩阵的内积

outer() 解两个矩阵的外积,又叫叉积

%*% 矩阵乘法,要求第一个矩阵的列数与行数相同

diag() 对矩阵取对角元素,若对象为向量(不管有没有缺失值),则生成以向量为对角元素的对角矩阵

solve() 在矩阵可逆的情况下,对矩阵求逆矩阵

eigen() 对矩阵求解特征值和特征向量

推荐阅读更多精彩内容