分享

R语言 | 第13期.apply家族入门应用

 新用户4064dVjo 2023-07-22 发布于北京

上一期我们介绍了如何利用stringr进行字符串修改R语言 | 12. 字符串排序、拼接和分割)。本期我们将介绍apply家族的四大函数——applylapplysapplytapply。

一、apply

1. 作用:作用于一个数组或矩阵的行或者列,将返回值保存在一个向量或数组中。

2. 用法:apply(X, MARGIN, FUN)X可以是二维矩阵/数组,也可以是高维数组。MARGIN=1表示对行操作,2则为列,FUN可以为内置函数,如sum,sd,mean,median等,也可以是自定义函数,如function(x){sum(x^2)}

3. 实操
## 构建一个数组x,并对每一行求平均数
x = array(rnorm(12), c(3,4))
x
apply(x, MARGIN = 1, FUN = mean) 

二、lapply

1. 作用:对列表执行操作,并返回长度相同的列表。

2. 用法:lapply(X, FUN)X为列表,FUN为内置或自定义函数。

3. 实操:

## 将mtcar数据根据cyl进行拆分成list,对list中的每个数据框进行apply操作(行求平均数)
library(data.table)
data <- split(as.data.table(mtcars), by = 'cyl')
out <- lapply(data, FUN = function(x){apply(x,1,mean)}

三、sapply

1. 作用:作用同lapply,当Xlist时,lapply返回列表,sapply返回向量

2. 用法:sapply(X, FUN)X为列表,FUN为内置或自定义函数

3. 实操:

Student <- c("John Davis""Angela Williams""Bullwinkle Moose",
             "David Jones""Janice Markhammer""Cheryl Cushing",
             "Reuven Ytzrhak""Greg Knox""Joel England",
             "Mary Rayburn")
name <- strsplit(Student, " ")
Lastname <- sapply(name, "[", 2)

四、tapply
1. 作用:计算向量中每个因子变量的度量(均值,中位数,最小值,最大值等)。
2. 实操
## 对于iris数据,计算每一种Species的Sepal.Width的中位数
tapply(iris$Sepal.Width, iris$Species, median)

这就是本期的全部内容啦,你学会了吗?大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话栏目中提出,我们会尽快回复!

写在最后



“观科研”(点击进一步了解我们吧)是由一群北京协和医学院(清华大学医学部)的博士开创的公众号,初心是让医学科研有迹可循,帮助一线的医学科研人员更快地成长,希望大家支持与关注!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多