所有资料来源于生信技能树
1. 向量
![](https://img.haomeiwen.com/i25596489/de311a05a502075b.png)
谁在逗号后面,出来的结果是谁的下标
![](https://img.haomeiwen.com/i25596489/1d89d4e0b5c5b1cc.png)
a <- c("11","22","33","44","55")
b <- c("22","11","33","44","55")
match(a,b)#出来b中的字符在a中的顺序
#[1] 2 1 3 4 5
b[match(a,b)]#将b按照a的顺序进行排序
#[1] "11" "22" "33" "44" "55"
-
向量讲完了
2.数据框、矩阵和列表
-
(1)矩阵
![](https://img.haomeiwen.com/i25596489/8ea558211ff3ad27.png)
![](https://img.haomeiwen.com/i25596489/c883e4ab4c10885f.png)
长度相同、数据类型相同的向量可以组合成矩阵
![](https://img.haomeiwen.com/i25596489/7626f4408e1f14c2.png)
矩阵中只有一种数据类型
-
(2)数据框——Dataframe
![](https://img.haomeiwen.com/i25596489/732e878c887bb082.png)
长度相同、数据类型不同或相同的向量可以组合成数据框
![](https://img.haomeiwen.com/i25596489/bd9c6766701f89ef.png)
-
(3)列表——List
![](https://img.haomeiwen.com/i25596489/c3b9f029380d0aa3.png)
长度可以不同、数据类型可以不同的向量组合
列表中可以包含向量、矩阵、数据框或小列表
-
2.1数据框——Dataframe
options(stringsAsFactors = F)
- 在4.0以前的版本要运行这行代码
- 在4.0以后的版本默认是这个设置,可以不运行这行代码
![](https://img.haomeiwen.com/i25596489/fe761f0e18203ff2.png)
-
(1)数据框的属性
![](https://img.haomeiwen.com/i25596489/4af4a9aade553590.png)
dim(df)#显示df几行几列
nrow(df)#显示df几行
ncol(df)#显示df几列
![](https://img.haomeiwen.com/i25596489/7d409913ca0c97a0.png)
rownames(df)#显示df的行名
colnames(df)#显示df的列名
-
(2)数据框取子集
df[2,2]#取df的第2行、第2列的向量
df[2,]#取df的第2行
df[,2]#取df的第2列
df[c(1,3),1:2]#取第1、3行和1-2列的向量
![](https://img.haomeiwen.com/i25596489/b697a31c6af3fc96.png)
df[,-ncol(df)]#取除最后一列的所有列
学会用函数和代码
df[3]#取第3列,仍是数据框
df[,3]#取第3列,但变为向量
df$xx#取df数据框的xx列
-
(3)数据框修改
![](https://img.haomeiwen.com/i25596489/1af52b14d7623865.png)
练习题3-2
![](https://img.haomeiwen.com/i25596489/96cae8bca176483c.png)
-
(4)数据框查看前/后几行
head(df)#只取前几行查看,默认是前6行
tail(df)#只取最后几行查看
head(df,3)#只取前3行查看
df[1:3,1:3]#只取df前3行/3列查看
-
(5)查看数据框的数据类型和具体内容
str(df)#查看df的数据类型和具体内容
num:numeric数值型
int:interge整数型
factor:因子型
chr:character文本型
-
(6)去除含有缺失值的行
na.omit(df)#去除含有缺失值的行
![](https://img.haomeiwen.com/i25596489/3f737561210cd197.png)
-
(7)两个表格的连接
![](https://img.haomeiwen.com/i25596489/d0305ee699008eca.png)
①按列合并
cbind(df)#按照列进行合并两个表格
②按行合并
rbind(df)#按照行进行合并两个表格
③不同行、列表格的连接
merge(df1,df2,by="name")#按照共同列进行合并两个表格
![](https://img.haomeiwen.com/i25596489/fdfa2f59e205e087.png)
④不同列名表格的连接
![](https://img.haomeiwen.com/i25596489/6e808db1c74cf266.png)
不同列名的表格进行合并code
merge(x=df1,y=df2,by.x="name",by.y="NAME")
![](https://img.haomeiwen.com/i25596489/1c68aa24eae96538.png)
-
2.2矩阵
-
(1)新建和取子集
![](https://img.haomeiwen.com/i25596489/83e606f33e0039f9.png)
矩阵不能用$取子集
-
(2)矩阵的转置和转换
t(matrix(1:9,nrow=3))
![](https://img.haomeiwen.com/i25596489/6b2dd1b889bd4215.png)
![](https://img.haomeiwen.com/i25596489/96d793190e561d26.png)
-
(3)矩阵画热图
![](https://img.haomeiwen.com/i25596489/fa91fc82bffd1cc7.png)
#R语言中会自动聚类,如果不想聚类,需要自定义设置
![](https://img.haomeiwen.com/i25596489/850fea5b69fec0e2.png)
-
2.3列表
-
(1)列表新建和取子集
![](https://img.haomeiwen.com/i25596489/d971908ca0fc26d6.png)
左边框是列表中元素的名字
右边框是元素的内容
![](https://img.haomeiwen.com/i25596489/2c228b2d9c158222.png)
l[[2]]"#取列表l的第2个元素,根据图中可知为df"
l$df"#取列表l的df元素"
l2 <- l[3]#一个中括号是取列表中的小列表
class(l2)
#[1] "list"
l3 <- l[[3]]#两个中括号是取列表中的元素
class(l3)
#"numeric"
用杀牛的刀杀鸡,咋的了,你管得着吗你——花花
老板,我不放香菜——花花
网友评论