矩阵和数据框每行每列处理 列表向量中每个元素处理
apply()族函数
1.apply 处理矩阵或数据框
代码语言:r复制#apply(X, MARGIN, FUN, …)
#其中X是数据框/矩阵名;
#MARGIN为1表示行,为2表示列,FUN是函数
test<- iris[1:6,1:4]
apply(test, 2, mean) # 对test的每一列求平均
代码语言:r复制## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 4.9500000 3.3833333 1.4500000 0.2333333
代码语言:r复制apply(test, 1, sum) # 对test的每一行求和
代码语言:r复制## 1 2 3 4 5 6
## 10.2 9.5 9.4 9.4 10.2 11.4
代码语言:r复制head()# 取前几个
tail()# 取后几个
2.lapply(list, FUN, …)
代码语言:r复制# 对列表/向量中的每个元素实施相同的操作 得到列表
lapply(1:4,rnorm)
代码语言:r复制## [[1]]
## [1] -0.1125071
##
## [[2]]
## [1] -0.7722204 0.2188351
##
## [[3]]
## [1] -0.2324538 -0.4484360 -2.0208578
##
## [[4]]
## [1] 0.59086709 0.48062406 0.05737153 1.20811435
代码语言:r复制sapply() # 简化为向量或矩阵,不能简化返回和lapply一样的结果
数据框连接
代码语言:r复制# 示例数据
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'),
blood_type = c("A","B","O","AB"))
test1
代码语言:r复制## name blood_type
## 1 jimmy A
## 2 nicker B
## 3 Damon O
## 4 Sophie AB
代码语言:r复制test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),
group = c("group1","group1","group2","group2"),
vision = c(4.2,4.3,4.9,4.5))
test2
代码语言:r复制## name group vision
## 1 Damon group1 4.2
## 2 jimmy group1 4.3
## 3 nicker group2 4.9
## 4 tony group2 4.5
代码语言:r复制library(dplyr)
inner_join(test1,test2,by="name") #取交集
代码语言:r复制## name blood_type group vision
## 1 jimmy A group1 4.3
## 2 nicker B group2 4.9
## 3 Damon O group1 4.2
代码语言:r复制left_join(test1,test2,by="name") #以左边(test1)为准连接
代码语言:r复制## name blood_type group vision
## 1 jimmy A group1 4.3
## 2 nicker B group2 4.9
## 3 Damon O group1 4.2
## 4 Sophie AB <NA> NA
代码语言:r复制right_join(test1,test2,by="name")
代码语言:r复制## name blood_type group vision
## 1 jimmy A group1 4.3
## 2 nicker B group2 4.9
## 3 Damon O group1 4.2
## 4 tony <NA> group2 4.5
代码语言:r复制full_join(test1,test2,by="name") # 取全集,NA补充缺失值
代码语言:r复制## name blood_type group vision
## 1 jimmy A group1 4.3
## 2 nicker B group2 4.9
## 3 Damon O group1 4.2
## 4 Sophie AB <NA> NA
## 5 tony <NA> group2 4.5
生信技能树