做微生物生态该学多少技术之《《R语言实战》- 杨盛蝶学习笔记

写在前面

我在一周半以前告诉师妹如何在本专业领域下学习生物信息学相关技术。这第一步就是学习R语言实战,当然并不是全部,这里我们仅仅关注前三章就够了。所以,师妹完成了R语言实战前三章的内容。

第一章 R语言介绍

1.3.3 R的使用

相比于两位师兄,师妹的学习注意到了这个部分,这是他们两个人没有做的,毕竟他们也了解了一年R语言了。

  • 对象可以是任何东西(数据、函数、图形、分析结 果,等等)。

    每一个对象都有一个类属性,类属性可以告诉R怎么对之进行处理。

  • 工作空间(workspace)就是当前R的工作环境,它存储着所有用户定义的对象(向量、矩阵、函数、数据框、列表)。

1.3.4 输入和输出

运行R脚本方式和输出保存和使用方式非常重要,他们两个没有这部分内容,但是需要学习

输入 (长期学习 理解 运用)

运行R脚本方式非常重要

函数source(“filename”)可在当前会话中执行一个脚本,执行文件里面的代码。

输出 (长期学习 理解 运用)

输出保存和使用方式非常重要

函数sink(“filename”)将输出重定向到文件filename中。使用参数append=TRUE可以将文本追加到文件后,而不是覆盖它。参数 split=TRUE可将输出同时发送到屏幕和输出文件中。

1.4 包的使用

补充基础知识用

1.4 什么是包 (了解)

  • 包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。

    计算机上存储包的目录称为库(library)。

    函数.libPaths()能够显示库所在的位置, 函数library()则可以显示库中有哪些包。

  • 安装好以后,它们必须被载入到会话中才能使用。

    命令search()可以告诉你哪些包已加载并可使用。

    包的安装

  • 使用命令install.packages()

  • update.packages()更新已经安装的包

  • installed. packages()命令,这将列出安装的包,以及它们的版本号、依赖关系等信息。

  • help(package=”tibble”),帮助文档显示可用的函数和数据集

  • library(),加载这个包,然后使用。

第二章 创建数据集

2.2 数据结构

  • R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。

2.2.1 向量 (理解,熟练运用)

  • 向量是用于存储数值型、字符型或逻辑型数据的一维数组

  • 单个向量中的数据必须 拥有相同的类型或模式(数值型、字符型或逻辑型)。

    同一向量中无法混杂不同模式的数据。

  • 通过在方括号中给定元素所处位置的数值,我们可以访问向量中的元素。

    后一个语句中使用的冒号用于生成一个数值序列

2.2.2 矩阵 (理解,熟练运用)

  • 矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型);

    向量添加维度就是矩阵。

  • ```

    myymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns,                     byrow=logical_value, dimnames=list(                      char_vector_rownames, char_vector_colnames))

huhua=matrix(1:4,nrow=2,ncol =2,dimnames=list(rnames,cnames),byrow = TRUE)

* 选项byrow则表明矩阵应当按行填充(byrow=TRUE) 还是按列填充(byrow=FALSE),默认情况下按列填充。
*
#### 矩阵下标的使用 (理解,熟练运用)

matrix[1,];matrix[,2];matrix[1,1];matrix[1,c(3,4,5)]

### 2.2.3 数组 (理解,熟练运用)

* 由向量组成,不能混杂数据类型,三维
* 利用array()函数创建数组

myarray <- array(vector, dimensions, dimnames)

z <- array(1:24, c(2, 3, 4), dimnames=list(dim1, dim2, dim3))

其中vector包含了数组中的数据,dimensions(各个维度)是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。

### 2.2.4 数据框 (理解,熟练运用)

* 由于不同的列可以包含不同模式(数值型、字符型等)的数据。可以为不同模型的向量组成的多个列,从而组成数据框。
* 每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。

**数据框取子集**

* patientdata$age 数据框+变量名
* patientdata[c("diabetes", "status")] 索引

#### attach()函数 (**很少使用**) (了解)

* 函数attach()可将数据框添加到R的搜索路径中。R在遇到一个变量名以后,将检查搜索路 径中的数据框。
* attach(mtcars)
summary(mpg)
plot(mpg,disp)

#### detach()函数(**很少使用**) (了解)

* 函数函数detach()将数据框从搜索路径中移除
* 。函数attach()和detach()好在你分析一个单独的 数据框,并且不太可能有多个同名对象时使用。

#### with()函数(**很少使用**) (了解)

* 花括号{}之间的语句都针对数据框mtcars执行
* with(mtcars,{summary(mpg)
plot(mpg,wt)})
* with(mtcars,{a <- summary(mpg)
a}),函数with()的局限性在于,赋值仅在此函数的括号内生效

#### 实例标志符 (行名) (理解运用)

* 实例标识 符(case identifier)可通过数据框操作函数中的rowname选项指
* 语句:
patientdata <- data.frame(patientID, age, diabetes, status, row.names=patientID)

### 2.2.5 因子(也是向量) (理解,熟练运用)

* 类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)
* 函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](其中k是名义 型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
* 要表示有序型变量,需要为函数factor()指定参数ordered=TRUE
* 因子最大作用就是用来分类、计算频率和频数

### 2.2.6 列表 (理解,熟练运用)

* 某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合
* 双重方括号中指明代表某个成分的数字或名称来访问列表中的元素

## 2.3 数据的输入

### 手动输入 (运用)

* 创建一个名为mydata的数据框,它含有三个变量:age(数值型)、gender(字符型)和weight(数值型)。然后你将调用文本编辑器edit(data),键入数据,后保存结果

mydata <- data.frame(age=numeric(0),hua=character(0),duo=numeric(0))
mydata <- edit(mydata)

### 从带分隔符的文本文件导入数据 (理解,熟练运用)

#### read.table 函数参数解析

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/5159F01C5B8B49A7857CB697A3BA313E/4345)

### 导入Excel数据 (**很少使用**) (了解)
* 在Excel中将其导出为一个逗号分隔文件(csv)

### 导入SPSS数据 (**很少使用**) (了解)
* 通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc包中的spss.get()函数。

### 导入SAS数据(**很少使用**) (了解)
* foreign包中的read.ssd(),Hmisc包中 的sas.get(),以及sas7bdat包中的read.sas7bdat()。

### 处理数据的实用函数 (全部学会,加强理解运用)

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/E0EE5B88542F4B9BA5AB7ADBFB1E5CB7/4356)

# 第三章 图形初阶

> 这里我来回答你们的问题,为什么ggplot出图如此流行,但却还要学习base包呢?从现实的角度来讲,许多咱们常用的数据分析包都还是基础包出图的,比如vegan等,许多图形都有基础包绘制额版本,甚至有的图形只能用基础包来绘制,比如和弦图。

**写在前面**:

虽然现在ggplot包使用非常方便,但是我还是要求师妹学习了这第三章的图形初阶,因为目前许多的传统使用多元统计分析的R包还是使用的base绘图,例如Vegan,randomforest等,所以还是需要了解一下,会晋城看到。但是不必过多的了解。

##### 如何创建并打开多个图形窗口

* 方法1 在创建一幅**新图形之前**打开一个新的图形窗口,dev.new()
* 方法2 。在打开第一个图形窗口以后,勾选“历史”(History)→“记录”(Recording)。然后使用菜 单中的“上一个”(Previous)和“下一个”(Next)来逐个查看已经绘制的图形

## 图形参数

### 符号和线条 (记忆,理解熟练)

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/86430BF8CA754438861C42EAABF1804D/4386)

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/77860EC233964E1E871E27709F19C525/4392)

* 对于符号21~25,你还可以指定边界颜色(col=)和填充色(bg=)。

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/2C5B62CD389A44498DDA0C09F5032471/4402)

* plot(dose,drugA,type = "b",pch=25,col="blue",bg="black",cex=1.5,lty=6,lwd=0.5),即可利用代码来修改符号和线条,但是此代码把线条也修改成了蓝色

### 颜色 (记忆,理解熟练)

![iamge](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/6B6A98ED0C2B4867B5433FB20315FA00/4418)

### 文本属性 (了解)
![iamge](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/852ED2846034439FAC45A7A001A82382/4425)

![iamge](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/57F09275AB5942B7B75DA9803E83E6F2/4430)

par(font.mian=1,cex.main=1.5,font.sub=2,cex.main=0.5),之后设置的**所有图形**都是按照此参数绘制。

#### 创建字体族 (了解)

* 通过函数windowsFont()来创建这类映射。
* 在执行语句:
windowsFonts( A=windowsFont("Arial Black"), B=windowsFont("Bookman Old Style"), C=windowsFont("Comic Sans MS") )
* 即可使用A、B和C作为family的取值。例如:par(family="A")将指定Arial Black作为绘图字体。

##### 若以PDF格式输出图形 (记忆,理解熟练)

* names(pdfFonts())找出你的系统中有哪些字体是可用的
* pdf(file= "myplot.pdf",family="fontname")来生成图形。

### 图形尺寸与边界尺寸 (了解)

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/499551026D274D45ABD5D90FD3AD3AFA/4455)
* 代码:par(pin=c(4,5),mai=c(2,1.5,2,1.6))

#### par()函数 (记忆,理解熟练)

* 通过par()设定的参数对所有绘图都有效,而在plot()函数中指定的参数仅对那个特定图形有效。
* 对所有图形设置相同的参数,并应用于所有图形。
* 参数no.readonly=TRUE可以生成一个可以修改的当前图形参数列表。代码:opar <- par(no.readonly=TRUE) ,可以修改图形默认的参数;
代码:par(opar),恢复默认设置。

### 添加文本、自定义坐标轴和图例 (学会使用)

#### title()函数

* 可以使用**title()函数为图形添加标题和坐标轴标签**。
* 代码:title(mian="main title",sub="sub title",xlab="huahu",ylab="guduo")
* 某些高级绘图函数已经包含了默认的标题和标签。通过在plot()语句或单独的par()语句中**添加ann=FALSE来移除**它们。
* 函数title()中可指定其他图形参数(如文本大小、字体、旋转角度和颜色)
* 代码:title(mian="main title",col.main="blue",cex.main=1.5,sub="sub title",xlab="huahu",ylab="guduo")

#### axis()函数 (了解)

* axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)
![iamge](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/86464BCA7A0249F1802C23F11011A9F8/4506)

#### 自定义坐标轴 (了解)

* 自定义坐标轴时,应该禁用高级绘图函数自动生成的坐标轴。
* 参数axes=FALSE将禁用全部坐标轴(包括坐标轴框架线,除非你添加了参数frame.plot=TRUE)。
* 参数xaxt="n"和yaxt="n"将分别禁用X轴或Y轴(会留下框架线,只是去除了刻度),你需要自定义哪条坐标轴,就禁用哪个坐标轴默认的参数。

![image](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/A3194767613546229AC8A5206CD981C2/4565)
![iamge](https://note.youdao.com/yws/public/resource/75517c885d7e7f1cc597ee55c28e7dd4/xmlnote/B2AF4E0E136741518E3D9F89D33EAC39/4605)

以上的图形代码:par(opar)

opar <- par(no.readonly=TRUE)
dose  <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
par(ann=FALSE)
plot(dose,drugA,type = “b”,yaxt=”n”)
lines(dose,drugB,type = “b”,lty=5,pch=23,col=”yellow”,bg=”green”,cex=1.5)
axis(2,at=c(16,20,27,40,60),labels=c(“16”,”20”,”27”,”40”,”60”),lty=2,col=”red”,las=2,tck=0.01)
axis(4,at=c(15,18,25,31,40),lty=5,col=”blue”,las=0,tck=-0.01)
title(main=”yaoxioa”,xlab = “dose”,ylab = “huahu”)
par(opar)

#### 如何添加右边纵坐标轴的标签 (了解)

#### 添加次要刻度线 (了解)

  • library(Hmisc)

  • minor.tick(nx=n, ny=n, tick.ratio=n)

    nx和ny分别指定了X轴和Y轴每两条主刻度线之间通过次要刻度线划分得到的区间个数。

    tick.ratio表示次要刻度线相对于主刻度线的大小比例

    ```

    参考线

函数abline()

  • abline(h=yvalues, v=xvalues)

  • h=yvalues,在y轴添加水平实线;

    v=xvalues,在x轴添加垂直实线。

图例 (学会使用)

函数legend() (学会使用)

  • legend(location, title, legend, …)

  • legend(“topleft”, inset=.05, title=”Drug Type”, c(“A”,”B”),lty=c(1, 2), pch=c(15, 17), col=c(“red”, “blue”))

* 代码:dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
opar <- par(no.readonly = TRUE)
par(cex=1.5,font=4,lwd=1.5)
plot(dose,drugA,type = "b",ann=FALSE,pch=1,lty=3,col="green")
lines(dose,drugA,type = "b",pch=23,col="red",bg="green",lty=4)
abline(h=30,col="yellow")
minor.tick(nx=3,ny=2,tick.ratio = 0.5)
title(main="doseab",xlab ="dose",ylab="akij",col="green" )
legend("topleft",title = "dodegood",c("drugA","drugB"),col=c("red","green"),lty=c(2,5),pch=c(2,11),cex=c(0.5,0.5))
par(opar)

文本标注 (学会使用)

函数text() (学会使用)

  • 向绘图区域内部区域添加文本

  • text(location, “text to place”, pos, …)

    mtext()

  • 向图形的四个边界之一添加文本

  • mtext(“text to place”, side, line=n, …)

text()函数也通常用来标示图形中的点
  • 需要标志的散点x和y(已经绘制好图中散点图的坐标,位置,可以是数值或者向量);x需要标志的文本,一个和点数量对应的向量;

    文本放置的位置,pos参数控制;

    还可以添加字体,颜色,大小等参数。

代码:

attach(mtcars)
plot(mpg,wt,pch=2,col="red",cex=1.5,ann=FALSE)
title(main = "good",xlab="go",ylab="od")
text(mpg,wt,row.names(mtcars),pos=4,font = 4,col="blue",cex=0.5)
detach(mtcar)

数学标注 (了解)

  • 函数plotmath()可以为图形主体或边界上的标题、坐标轴名称 或文本标注添加数学符号。

图形的组合 (学会使用)

mfrow()函数

  • 使用图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为 nrows、列数为ncols的图形矩阵。

  • 代码:

    par(mfrow=c(a,b))

问题 如何修改图图图之间的距离以及图形大小?????
禁用默认标题的方法
  • main=“”

  • ann=FAlSE

layout()函数 (学会使用)

  • mat是一个矩阵,它指定了所要组合的 多个图形的所在位置,根据图形个数,选定需要绘制组合图形的行数和列数,若图形个数少于矩阵中元素个数,重复想要的图形即可。

    代码:

    layout(matrix(c(1,2,3,4,4,5), 2, 3, byrow = TRUE))

    hist(wt)

    hist(mpg)

    hist(disp)

    plot(wt)

    plot(mpg)

    detach(mtcars)

改变组合图形的宽度与高度
  • layout(widths=a, heights=b)

  • widths = 各列宽度值组成的一个向量

  • heights = 各行高度值组成的一个向量

  • layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE),widths=c(3, 1), heights=c(1, 2))

  • 相对高度可以用数值表示,绝对高度是lcm()函数来设定。

评语

总的来说,这份笔记要更加细致一些,可以看出学习者学习的内容和了解东西很多,同样要进行多次的学习才能了解,尤其是我标注了理解和运用的部分,这是下次学习的重点。在后续的重复学习中药在R.Rmd中做笔记,在运行的过程中理论和实践结合。

(0)

相关推荐