apply函数
-
沿着数组的某一维度处理数据。例如:将函数用于矩阵的行或列;虽然与for/while循环的效率相似,但只用一句话就可以完成
-
参数: apply(数组,维度,函数/函数名)
x<-matrix(1:16,4,4)
apply(x,2,mean)
[1] 2.5 6.5 10.5 14.5
x<-matrix(rnorm(100),10,10)
apply(x,1,quantile,probs=c(0.25,0.75))
lapply函数
- 可以循环处理列表中的每一个元素
-
参数: lapply(列表,函数/函数名,其他)
- 总是返回一个列表
x<-list(a=1:10,b=c(11,21,31,41,51))
lapply(x,mean) #若x不是一个列表,R会将其强制转换为列表
$a
[1] 5.5
$b
[1] 31
sapply函数
- 结果列表元素长度均为1,返回向量
-
结果列表元素长度相同且大于1,返回矩阵(若长度不相同,则不能简化,即依然为列表)
x<-list(a=1:10,b=c(11,21,31,41,51))
sapply(x,mean)
a b
5.5 31.0
mapply函数
- lapply的多元版本
-
参数: mapply(函数/函数名,数据,函数相关的参数)
mapply(rep,1:4,4:1)
[[1]]
[1] 1 1 1 1
[[2]]
[1] 2 2 2
[[3]]
[1] 3 3
[[4]]
[1] 4
tapply函数
- 对向量的子集进行操作
-
参数: tapply(向量,因子/因子列表,函数/函数名)
x<-c(rnorm(5),runif(5),rnorm(5,1))
f<-gl(3,5)
tapply(x,f,mean)
1 2 3
-0.4793135 0.6472551 0.8236216