lipc20052006的个人博客分享 http://blog.sciencenet.cn/u/lipc20052006

博文

r apply 家族

已有 2536 次阅读 2014-11-21 21:45 |个人分类:R|系统分类:科研笔记

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 ...

>




https://blog.sciencenet.cn/blog-253562-845223.html

上一篇:r aggregate
下一篇:match %in% ,数据框 行列筛选
收藏 IP: 114.251.216.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-8-17 03:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部