目录
首先我们给出三个函数的应用区别:
- apply() 作用在矩阵上
- lapply() 作用在向量或列表上,返回列表
- sapply() 作用在向量或列表上,返回向量
一、 apply()
> x<-array(c(1:24),c(3,4))
> x
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> apply(x,1,sum) #按行
[1] 22 26 30
> apply(x,2,sum) #按列
[1] 6 15 24 33
我们试着配合自定义函数:
> myFun<-function(x){sum(x^2)}
> apply(x,1,myFun)
[1] 166 214 270
二、lapply() 和 sapply()
> y<-c(2:5)
> lapply(y,function(x) {x^2})
[[1]]
[1] 4
[[2]]
[1] 9
[[3]]
[1] 16
[[4]]
[1] 25
> sapply(y,function(x) {x^2}) #注意这里的x只是形式上的y,和之前的矩阵没有关系
[1] 4 9 16 25
> sapply(y,function(x)matrix(x,2,2),simplify = "array") #若输出是矩阵,要填一个参数
, , 1
[,1] [,2]
[1,] 2 2
[2,] 2 2
, , 2
[,1] [,2]
[1,] 3 3
[2,] 3 3
, , 3
[,1] [,2]
[1,] 4 4
[2,] 4 4
, , 4
[,1] [,2]
[1,] 5 5
[2,] 5 5