R语言有很重要的apply族函数:lapply sapply apply tapply mapply。这些函数底层通过C实现,效率比手工遍历高效。apply族函数是高效能计算的运算向量化(Vectorization)实现方法之一,比起传统的for,while常常能获得更好的性能。

1. apply 对matrix指定维度操作

###1. apply 对matrix指定维度操作x <- cbind(x1 = 3, x2 = c(4:1, 2:5),x3= c(1:8))
dimnames(x)[[1]] <- letters[1:8]
apply(x, 2, mean, trim = .2) # 列求平均值
col.sums <- apply(x, 2, sum)
row.sums <- apply(x, 1, sum)
row.sums <- apply(x, 1, sum,simplify = TRUE)

2. lapply:对列表的每个组件执行给定的函数,并返回另一个列表。

###2. lapply:对列表的每个组件执行给定的函数,并返回另一个列表。
x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
lapply(x,quantile) # 返回list
lapply(x, mean)
lapply(x, quantile, probs = 1:3/4)

3. sapply: 简化的apply和lapply,结果以向量,矩阵,列表的形式输出

###3. sapply: 简化的apply和lapply,结果以向量,矩阵,列表的形式输出
sapply(x, quantile) # 返回matrixy<-c("100-D","100-A","110-c","110-A")
z<-strsplit(y,"-")
sapply(z,"[",1) #提取列表第1个元素
sapply(z,"[",2) #提取列表中第2个元素

4. mapply:将函数应用于多个列表或向量参数,多参数版本的sapply

###4. mapply:将函数应用于多个列表或向量参数,多参数版本的sapply
b<-matrix(1:12,c(3,4),dimnames=list(c("a","b","c"),c("A","B","C","D")))
mapply(sum, b[,1],b[,3],b[,4]) # 对多个向量按index分别求和

5. vapply:与sapply相似,可以预先指定的返回值类型,得到的结果更加安全

###5. vapply:与sapply相似,可以预先指定的返回值类型,得到的结果更加安全。
vapply(x, quantile, c(1,2,3,6,8))

6. tapply:将数据按照不同方式分组,生成类似列联表形式的数据结果

### 6. tapply:将数据按照不同方式分组,生成类似列联表形式的数据结果。
manager <- c(1, 2, 3, 4, 5)
country <- c("US", "US", "UK", "UK", "UK")
gender <- c("M", "F", "F", "M", "F")
age <- c(32, 45, 25, 39, 99)
leadership <- data.frame(manager, country, gender, age)
#不同country水平下的age的均值
tapply(leadership$age, leadership$country, mean)
#不同country和gender交叉水平下的age的均值, 输出得到矩阵数据
tapply(leadership$age, list(leadership$country, leadership$gender), mean) 

R语言apply族函数相关推荐

  1. 「杂谈」如何写好R语言apply家族函数

    感觉好久没发有关R语言的博客了.这一年来,我着手开发了两个R包,但基本没怎么发博客. 原因也很简单,可能是我个人的私心吧,或者说是典型的"理论研究者"的"通病" ...

  2. R 语言 apply 系列函数

    apply() 4 4.0 > #apply系列函数 > > #apply(X, MARGIN, FUN, ...) > #参数列表: > #X:数组.矩阵.数据框 &g ...

  3. R语言apply系列函数

    apply系列函数 大家好,这里是想做生信大恐龙

  4. R语言中dim函数_R语言--向量化计算(apply族函数)

    R语言最优秀的是它的向量化编程,这其中apply族函数扮演了非常重要的角色.apply族函数是由apply.sapply.lapply.mapply.tapply等函数组成的.熟练使用apply族函数 ...

  5. R语言na.omit函数删除NA值实战

    R语言na.omit函数删除NA值实战 目录 R语言na.omit函数删除NA值实战 #基本语法 #dataframe应用na.omit #删除向量中的NA值 #na.omit函数.complete. ...

  6. base | 使用apply族函数进行向量化运算

    R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...

  7. R语言使用basename函数获取数据链接地址中的文件名称(removes all of the path up to and including the last path separator )

    R语言使用basename函数获取数据链接地址中的文件名称(removes all of the path up to and including the last path separator (i ...

  8. R语言使用unzip函数解压压缩文件(Extract or List Zip Archives)

    R语言使用unzip函数解压压缩文件(Extract or List Zip Archives) 目录 R语言使用unzip函数解压压缩文件(Extract or List Zip Archives) ...

  9. R语言使用across函数一次性将多个数据列进行离散化(categorize):或者pivot_longer函数转化为长表、对转化为长表的数值数据列进行离散化、pivot_wider将数据转化为宽表

    R语言使用across函数一次性将多个数据列进行离散化(categorize):或者pivot_longer函数转化为长表.对转化为长表的数值数据列进行离散化.pivot_wider将数据转化为宽表 ...

最新文章

  1. windows server 驱动精灵_大神教你如何在Win10中检查磁盘驱动器错误
  2. 一个项目从开工到交付使用需要经历的过程
  3. UNITY插件信息收集
  4. 美国Thinkfun的“编程三剑客”少儿编程从入门到精通
  5. 天线巴伦制作和原理_10米段的春天 | 用自制环型天线+改装SDR接收器27MHz采访实录...
  6. linux设备驱动中的并发控制
  7. Linux系统下破解root用户密码
  8. CSS字体和文本相关
  9. 奥维地图从服务器获取信息超时,2021奥维地图不能用了原因及解决办法
  10. 表贴电阻尺寸与什么有关_贴片电阻功率及封装尺寸
  11. 小旋风虚拟服务器怎么用,超级小旋风asp服务器软件使用图文教程
  12. python解析can报文_解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真
  13. html文本文档加图片格式,以图片格式呈现的文档怎么编辑文字
  14. Arduino引用第三方库ads1x15提示No such file or directory
  15. c语言控制51单片机完成交通信号灯(红绿灯)
  16. 【MySQL】创建数据库表
  17. java发送 NameValuePair格式post请求
  18. 数字图像处理与MATLAB 第四章学习笔记
  19. 线性拟合的 R2 和p值怎么计算
  20. C/C++实现循环左移,循环右移

热门文章

  1. gazebo入门_【ROS-Gazebo】仿真插件编写教程(1)——概述
  2. C++中的迭代器(STL迭代器)iterator
  3. 寒武纪招聘|智能驾驶类、算法类、软件类、芯片类等岗位(校招/社招)
  4. 实操教程|详细记录solov2的ncnn实现和优化
  5. StereoDRNet:基于stereo的三维重建网络
  6. 2021-07-12 深度学习服务器网络测试(顶会ECCV网络测试)
  7. c语言通过域组策略下发软件,windows 2008 server 域环境通过组策略下发计划任务(示例代码)...
  8. React history.push 传递参数
  9. OpenCV | OpenCV彩色图像直方图算法实现
  10. RDKit | 基于RDKit描述三维分子形状(3D描述符)