||
apply家族功能很强大,却一直掌握不好,写几点体会
1.apply
apply用在矩阵上,我平时用的不过,apply(X, MARGIN, FUN, ...)
MARGIN=1为第一维(行),2为第二维(列)
2.lapply sapply 这两个用在列表和数据框中,用到的非常多,非常好用。
lapply返回的结果为列表,长度与X相同
sapply返回的结果比较“友好”,如果结果很整齐,就会得到向量或矩阵或数组
求数据框中每个变量的mean(FUN)
列表
> lapply(mtcars[,1:3],mean,na.rm=T)
$mpg
[1] 20.09062
$cyl
[1] 6.1875
$disp
[1] 230.7219
数据框
> data.frame(lapply(mtcars[,1:3],mean,na.rm=T))
mpg cyl disp
1 20.09062 6.1875 230.7219
数据框
> sapply(mtcars[,1:3],mean,na.rm=T)
mpg cyl disp
20.09062 6.18750 230.72188
用匿名函数
> str(mtcars[,1:3])
'data.frame':32 obs. of 3 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
修改数据框变量类型非常好用
mtcars[,1:3]=lapply(mtcars[,1:3],function(x) factor(x))
> str(mtcars[,1:3])
'data.frame':32 obs. of 3 variables:
$ mpg : Factor w/ 25 levels "10.4","13.3",..: 16 16 19 17 13 12 3 20 19 14 ...
$ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
$ disp: Factor w/ 27 levels "71.1","75.7",..: 13 13 6 16 23 15 23 12 10 14 ...
>
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-19 18:24
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社