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

写在前面

评阅的内容全部都是灰色.

第一章

基本指令

1.3.3 工作目录相关

每次进行项目均要指定工作目录,方便文件保存与读取

# 查看工作目录
getwd()

# 设置工作目录,注意R为反斜杠
setwd("C:/cabbage/result/机器学习")

# 通过界面手动选择

1.4 包相关

R包类似于功能集合

# 常用安装,下载前设置好镜像位置
install.packages()

# 通过github安装
library("devtools")
install_github("github上项目所在位置")

# 通过bioconductor安装
BiocManager::install()

# 本地安装,通过R包中Rproj文件Building

# 本地安装,下载R包压缩文件

# 包加载
library()

# 查看帮助文件
?ggplot()

选中包后,F1快捷键

第二章

数据结构

向量,存储数值、字符、逻辑数据的一维数组

(理解,熟练运用)

a<- c(1,2,3)
# 访问单一数值
a[1]

# 访问多个
a[c(1,2)]

# 连续选择
a[1:3]

矩阵,二维数据结构,存储单一数值、字符、逻辑

(理解,熟练运用)

# 创建5 行四列矩阵,默认按列填充
b<- matrix(1:20,nrow = 5,ncol = 4)

[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20

# 设置行列名称
rname=c("a","b","c","d","e")
cname=c("f","g","h","m")
c<- matrix(1:20,nrow = 5,ncol = 4,dimnames = list(rname,cname))

# 选择b中第二行
b[2,]

# 选择第2列
b[,2]

# 选择某个元素
b[2,2]

# 选择2行,2到4列
b[2,c(2:4)]

数据框,最常见的数据结构,列向量可为任何类型

(理解,熟练运用)

# 选取数据框中1到6列
diamonds[1:6]

# 选取其中某一列
library(tidyverse)
summary(diamonds$carat)

# 减少重复数据书写,选取当前数据集
attach(diamonds)
summary(carat)

# 解除对数据集占有
detach()

因子:包括有序型和类别型。在可视化中,与图形展示顺序相关。

(理解,熟练运用)

# 字符型因子,默认排序按照字母顺序
status <- c("Poor", "Improved", "Excellent", "Poor")
status <- factor(status, ordered=TRUE)

status
[1] Poor Improved Excellent Poor
Levels: Excellent < Improved < Poor

#修改顺序
status <- factor(status, order=TRUE,
levels=c("Poor", "Improved", "Excellent"))

# 示例
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
# 将diabetes指定为普通因子
diabetes <- factor(diabetes)
# status指定为有序因子
status <- factor(status, order=TRUE)
patientdata <- data.frame(patientID, age, diabetes, status)
str(patientdata)

列表:可能是若干向量、矩阵、数据框,甚至其他列表的组合

(理解,熟练运用)

# 示例
g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow=5)
k <- c("one", "two", "three")
# 生成列表包含两部分,第一部分包含题目,第二部分包含age相关信息
mylist <- list(title=g, ages=h, j, k)
mylist$title
mylist$ages

数据导入

(理解,熟练运用)

read.table()读取分隔符文件

# 参数介绍
# 读取第一行为表头
header=T

# 制表分隔符,默认空格
sep=","

# 读取第一列做为列名,列名不允许重复
row.names= T

# 设置列向量类型为字符型、数字型等
colClasses=c("numeric", "numeric", "character",
"NULL", "numeric")

# 取消对读取信息进行因子型转换
stringsAsFactors=FALSE

# 跳过前几行
skip

第三章

R基础包进行图形绘制

# 示例
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
plot(dose, drugA, type="b")
# x轴为dose,y轴为drugA,type="b"使用点线连接图形,lty=2线条修改为虚线,pch=17点设置为实心三角
plot(dose, drugA, type="b", lty=2, pch=17)

图形参数

pch 指定绘制点时使用的符号

cex 指定符号的大小。cex 是一个数值,表示绘图符号相对于默认大小的缩放倍数。默认大小为 1
示放大为默认值的 1.5 倍, 0.5 表示缩小为默认值的 50%

lty 指定线条类型

lwd 指定线条宽度。lwd 是以默认值的相对大小来表示的(默认值为 1)。例如, lwd=2 将生成一条两倍于
默认宽度的线条

颜色设置

col 默认的绘图颜色。某些函数(如 lines 和 pie)可以接受一个含有颜色值的向量并自动循环使用。
例如,如果设定 col=c(“red”, “blue”)并需要绘制三条线,则第一条线将为红色,第二条线为蓝
色,第三条线又将为红色

col.axis 坐标轴刻度文字的颜色

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

col.main 标题颜色

col.sub 副标题颜色

fg 图形的前景色

bg 图形的背景色

颜色展示

library(RColorBrewer)
n <- 7
# Set1调色板中抽取了7种用十六进制表示的颜色
mycolors <- brewer.pal(n, "Set1")
barplot(rep(1,n), col=mycolors)

# 查看RColorBrewer中所有颜色
brewer.pal.info

文本设置

cex 表示相对于默认大小缩放倍数的数值。默认大小为 1, 1.5 表示放大为默认值的 1.5 倍, 0.5 表示缩小为
默认值的 50%,等等

cex.axis 坐标轴刻度文字的缩放倍数。类似于 cex

cex.lab 坐标轴标签(名称)的缩放倍数。类似于 cex

cex.main 标题的缩放倍数。类似于 cex

cex.sub 副标题的缩放倍数。类似于 cex

font 整数。用于指定绘图使用的字体样式。1=常规, 2=粗体, 3=斜体, 4=粗斜体, 5=符号字体(以 Adobe
符号编码表示)

font.axis 坐标轴刻度文字的字体样式

font.lab 坐标轴标签(名称)的字体样式

font.main 标题的字体样式

font.sub 副标题的字体样式

ps 字体磅值( 1 磅约为 1/72 英寸)。文本的最终大小为 ps*cex
family 绘制文本时使用的字体族。标准的取值为 serif(衬线)、 sans(无衬线)和 mono(等宽)

图形尺寸

pin 以英寸表示的图形尺寸(宽和高)

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

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

# 生成一幅4英寸宽、 3英寸高、上下边界为1英寸、左边界为0.5英寸、右边界为0.2英寸的图形
par(pin=c(4,3), mai=c(1,.5, 1, .2))

添加文本、自定义坐标轴和图例

(学会使用)

标题

title(main="main title", sub="subtitle",
xlab="x-axis label", ylab="y-axis label")

坐标轴

axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)

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

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

labels 一个字符型向量,表示置于刻度线旁边的文字标签(如果为 NULL,则将直接使用 at 中的值

pos 坐标轴线绘制位置的坐标(即与另一条坐标轴相交位置的值)
lty 线条类型

col 线条和刻度线颜色
las 标签是否平行于( =0)或垂直于( =2)坐标轴

tck 刻度线的长度,以相对于绘图区域大小的分数表示(负值表示在图形外侧,正值表示在图形内侧, 0
表示禁用刻度, 1 表示绘制网格线);默认值为–0.01

示例

# 生成2数据
x <- c(1:10)
y <- x
z <- 10/x

# 控制图形边界
opar <- par(no.readonly=TRUE)
par(mar=c(5, 4, 4, 8) + 0.1)

# 生成图形,type="b"点线图, pch=21选择点的类型,yaxt="n"去除y轴刻度, lty=3线条类型, col="red"边界色红色,ann=FALSE无注释信息
plot(x, y, type="b",
pch=21, col="red",
yaxt="n", lty=3, ann=FALSE)

# 添加直线
lines(x, z, type="b", pch=22, col="blue", lty=2)

# 绘制新轴
axis(2, at=x, labels=x, col.axis="red", las=2)
axis(4, at=z, labels=round(z, digits=2),
col.axis="blue", las=2, cex.axis=0.7, tck=-.01)

# 添加注释信息
mtext("y=1/x", side=4, line=3, cex.lab=1, las=2, col="blue")
title("An Example of Creative Axes",
xlab="X values",
ylab="Y=X")
par(opar)

参考线

abline(h=yvalues, v=xvalues)

# 在y为1、 5、 7的位置添加了水平实线
abline(h=c(1,5,7))

图例

legend(location, title, legend, ...)

location 有许多方式可以指定图例的位置。你可以直接给定图例左上角的 x、 y 坐标,也可以执行 locator(1),
然后通过鼠标单击给出图例的位置,还可以使用关键字 bottom、 bottomleft、 left、 topleft、 top、
topright、 right、 bottomright 或 center 放置图例。如果你使用了以上某个关键字,那么可以
同时使用参数 inset=指定图例向图形内侧移动的大小(以绘图区域大小的分数表示)

title 图例标题的字符串(可选)
legend 图例标签组成的字符型向量

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(lwd=2, cex=1.5, font.lab=2)

# 绘制图形
plot(dose, drugA, type="b",
pch=15, lty=1, col="red", ylim=c(0, 60),
main="Drug A vs. Drug B",
xlab="Drug Dosage", ylab="Drug Response")
lines(dose, drugB, type="b",
pch=17, lty=2, col="blue")
abline(h=c(30), lwd=1.5, lty=2, col="gray")

# 添加刻度线
library(Hmisc)
minor.tick(nx=3, ny=3, tick.ratio=0.5)
legend("topleft", inset=.05, title="Drug Type", c("A","B")
lty=c(1, 2), pch=c(15, 17), col=c("red", "blue"))
par(opar)

文本标注

(学会使用)

text(location, "text to place", pos, ...)

mtext("text to place", side, line=n, ...)

location 文本的位置参数。可为一对 x、 y 坐标,也可通过指定 location 为 locator(1)使用鼠标交互式地确
定摆放位置

pos 文本相对于位置参数的方位。1=下, 2=左, 3=上, 4=右。如果指定了 pos,就可以同时指定参数 offset=
作为偏移量,以相对于单个字符宽度的比例表示

side 指定用来放置文本的边。1=下, 2=左, 3=上, 4=右。你可以指定参数 line=来内移或外移文本,随着
值的增加,文本将外移。也可使用 adj=0 将文本向左下对齐,或使用 adj=1 右上对齐

图形的组合

(学会使用)

par()或layout()可以容易地组合多幅图形为一幅总括图形。

后续作图使用ggplot2较多,参数的设置与基础包并不相同,因此对图形相关章节并未深入学习。

评语

这份学习笔记相比而言是有一些基础在里面的,学习内容,尤其是前一部分有了部分总结的成分,但是需要注意还有一些细小的知识很重要的知识需要学习:
例如:数据统计函数,saink函数,source函数,这些都是前面介绍过的,很有用的函数,需要进一步补充到笔记中。
在后续的重复学习中药在R.Rmd中做笔记,在运行的过程中理论和实践结合。

(0)

相关推荐