*apply的Part I 提到了apply, tapply, by, eapply四个函数,接下来我们看看剩下的几个。主要参数X和FUN的用法跟之前Part I里都差不多。
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
-+-
1. lapply系列函数
1. 1
lapply(X, FUN...)
返回一个list,长度等同于处理对象X的长度,函数开头的“l”是list的缩写。个人的理解是,在一个二维的矩阵上,lapply就是指定第二维度的apply函数。对于一个元素都是vector或factor的list,list层面上的那个维度,也可以看做是第二维度。
> x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
> lapply(x, mean) # lapply to a list
$a
[1] 5.5
$beta
[1] 4.535125
$logic
[1] 0.5
> lapply(mtcars, summary)[1:5] # lapply to a matrix
$mpg
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90
$cyl
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 4.000 6.000 6.188 8.000 8.000
$disp
Min. 1st Qu. Median Mean 3rd Qu. Max.
71.1 120.8 196.3 230.7 326.0 472.0
$hp
Min. 1st Qu. Median Mean 3rd Qu. Max.
52.0 96.5 123.0 146.7 180.0 335.0
$drat
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.760 3.080 3.695 3.597 3.920 4.930
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90
$cyl
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 4.000 6.000 6.188 8.000 8.000
$disp
Min. 1st Qu. Median Mean 3rd Qu. Max.
71.1 120.8 196.3 230.7 326.0 472.0
$hp
Min. 1st Qu. Median Mean 3rd Qu. Max.
52.0 96.5 123.0 146.7 180.0 335.0
$drat
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.760 3.080 3.695 3.597 3.920 4.930
对于处女座来说,lapply其实是挺烦的,因为总是返回一个list,其实返回的数据可以结构更简单。于是就有了sapply。函数开头的s大概就是simplify的意思了。
---------------------------------------------------------------------------------
1.2
sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)