前一篇记录了第一部分前4章的内容,接下来是5~8章的内容。这两天做笔记发现一个很好的点是,在自己看完一遍书,又在电脑上做记录再看一遍书,这样反反复复的看书和思考可以很快的去理解知识点。好记性不如烂笔头,何况在互联网时代,可以敲键盘来记录自己所看到的,真的是一个不错的方法。
- 列表和数据框
- 特殊值、类型和转换
- 基本绘图
- 读写文件
列表和数据框
列表可以包含数值型矩阵、逻辑型数组,字符串和因子变量,也可以包含其他列表。
创建列表、输出列表长度、提取列表中组件。例如:
> foo <- list(matrix(data=1:4,nrow=2,ncol=2),c(T,F,T,T),"hello")
> foo #创建了一个矩阵,逻辑向量,字符串
[[1]]
[,1] [,2]
[1,] 1 3
[2,] 2 4
[[2]]
[1] TRUE FALSE TRUE TRUE
[[3]]
[1] "hello"
> length(x=foo)
[1] 3 #length函数检查列表中有几个组件
> foo[[1]]
[,1] [,2]
[1,] 1 3
[2,] 2 4
> foo[[3]]
[1] "hello" #用索引和中括号提取列表组件
用names
函数给列表中的元素命名。
> names(foo) <- c("mymatrix","mylogicals","mystring")
> foo #按顺序命名为这几个名称
$mymatrix
[,1] [,2]
[1,] 1 3
[2,] 2 4
$mylogicals
[1] TRUE FALSE TRUE TRUE
$mystring
[1] "hello"
数据框是使用data.frame
函数来创建,以长度相等的向量形式提供数据。例如:
> mydata <- data.frame(person=c("Peter","Lois","Meg","Chris","Stewie"),age=c(42,40,17,14,1),sex=factor(c("M","F","F","M","M")))
> mydata
person age sex
1 Peter 42 M
2 Lois 40 F
3 Meg 17 F
4 Chris 14 M
5 Stewie 1 M
#创建了一个包含 person、age、sex的数据框
> mydata[2,2]
[1] 40 #用中括号提取2行2列的元素
> mydata$age
[1] 42 40 17 14 1
> mydata$age[2]
[1] 40 #使用$符号也可以提取数据
使用stringsAsFactors=FALSE
避免系统默认将字符串转换成因素
> mydata <- data.frame(person=c("Peter","Lois","Meg","Chris","Stewie"),age=c(42,40,17,14,1),sex=factor(c("M","F","F","M","M")),stringsAsFactors=FALSE)
> mydata
person age sex
1 Peter 42 M
2 Lois 40 F
3 Meg 17 F
4 Chris 14 M
5 Stewie 1 M
> mydata$person
[1] "Peter" "Lois" "Meg" "Chris" "Stewie" #person是字符串
可以使用rbind、cbind
添加合并数据、也可以利用逻辑值提取数据
特殊值、类型和转换
无穷数用Inf 表示,因为是无穷数是数值型数据,所以Inf 只能与数值型向量相关,-Inf表示负无穷。
> foo <- Inf #定义了单个无穷数对象
> foo
[1] Inf
> bar <- c(3401,Inf,3.1,-555,Inf,43) #含有无穷数的数值型向量
> bar
[1] 3401.0 Inf 3.1 -555.0 Inf 43.0
> baz <- 90000^100 #无穷数
> baz
[1] Inf
NaN表示非数值,至于数值型观测值相关联,指一些计算的非预期结果,用is.nan
函数检测是否存在NaN值。
NA值 是缺失值,即Not Available,NA值可以用于任何类型的数据,,用函数is.na
来识别缺失值,na.omit
函数删除所有NA值。
NULL是空值,is.null
来检查元素是否为空值。
用attributes
函数输出任何对象的属性,用class
函数提取特定属性,is.
函数检查对象是特定的类别还是数据类型,其返回结果是逻辑值。用as.
函数转换数据原有类型。
基本绘图
plot函数绘图,例如:
> foo <- c(1.1,2,3.5,3.9,4.2)
> bar <- c(2,2.2,-1.3,0,0.2)
> plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=4,pch=8,lty=2,cex=2.3,lwd=3.3)
#type 图的形式,main 标题,xlab,ylab 横纵坐标,col 颜色,pch 点的特征,lty线的类型,lwd线的宽度,cex点的大小
> plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=6,pch=15,lty=3,cex=0.7,lwd=2)
用ggplot2包绘图,在后续会更详细的介绍。
读写文件
用install.packages()
安装程序包,library
函数加载程序包
使用read.table
导入表格格式的文件,例如:
> mydatafile <- read.table(file="D:/R语言之书资源/8.2.1_mydatafile.txt",header=TRUE,sep=" ",na.strings="*",stringsAsFactors=FALSE)
#file 是文件名和文件位置的字符串,使用斜杠/,header是否使用表头,sep表示分隔符的字符串,na.strings表示缺失值的字符串,
> mydatafile
person age sex funny age.mon
1 Peter NA M High 504
2 Lois 40 F <NA> 480
3 Meg 17 F Low 204
4 Chris 14 M Med 168
5 Stewie 1 M High NA
6 Brian NA M Med NA
使用file.choose()
命令来查找文件
使用read.table、read.csv
命令来导入office表格,首先要转换表格的格式,先在Excel中转换,再导入R中
> spread <- read.csv(file="D:\\R语言之书资源\\8.2.2_spreadsheetfile.csv",header=FALSE,stringsAsFactors=TRUE)
> spread
V1 V2 V3
1 55 161 female
2 85 185 male
3 75 174 male
4 42 154 female
5 93 188 male
6 63 178 male
7 58 170 female
8 75 167 male
9 89 181 male
10 67 178 female
也可以读取网页中的数据,也可以使用R包forein读取统计软件中的数据文件。
写出文件用write.table
,write.csv
入门生信最快方式请搜索生信技能树
- 生信技能树全球公益巡讲
https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g - B站公益74小时生信工程师教学视频合辑https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw
- 招学徒
https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw