R语言apply族函数
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族函数相关推荐
- 「杂谈」如何写好R语言apply家族函数
感觉好久没发有关R语言的博客了.这一年来,我着手开发了两个R包,但基本没怎么发博客. 原因也很简单,可能是我个人的私心吧,或者说是典型的"理论研究者"的"通病" ...
- R 语言 apply 系列函数
apply() 4 4.0 > #apply系列函数 > > #apply(X, MARGIN, FUN, ...) > #参数列表: > #X:数组.矩阵.数据框 &g ...
- R语言apply系列函数
apply系列函数 大家好,这里是想做生信大恐龙
- R语言中dim函数_R语言--向量化计算(apply族函数)
R语言最优秀的是它的向量化编程,这其中apply族函数扮演了非常重要的角色.apply族函数是由apply.sapply.lapply.mapply.tapply等函数组成的.熟练使用apply族函数 ...
- R语言na.omit函数删除NA值实战
R语言na.omit函数删除NA值实战 目录 R语言na.omit函数删除NA值实战 #基本语法 #dataframe应用na.omit #删除向量中的NA值 #na.omit函数.complete. ...
- base | 使用apply族函数进行向量化运算
R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...
- 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 ...
- R语言使用unzip函数解压压缩文件(Extract or List Zip Archives)
R语言使用unzip函数解压压缩文件(Extract or List Zip Archives) 目录 R语言使用unzip函数解压压缩文件(Extract or List Zip Archives) ...
- R语言使用across函数一次性将多个数据列进行离散化(categorize):或者pivot_longer函数转化为长表、对转化为长表的数值数据列进行离散化、pivot_wider将数据转化为宽表
R语言使用across函数一次性将多个数据列进行离散化(categorize):或者pivot_longer函数转化为长表.对转化为长表的数值数据列进行离散化.pivot_wider将数据转化为宽表 ...
最新文章
- windows server 驱动精灵_大神教你如何在Win10中检查磁盘驱动器错误
- 一个项目从开工到交付使用需要经历的过程
- UNITY插件信息收集
- 美国Thinkfun的“编程三剑客”少儿编程从入门到精通
- 天线巴伦制作和原理_10米段的春天 | 用自制环型天线+改装SDR接收器27MHz采访实录...
- linux设备驱动中的并发控制
- Linux系统下破解root用户密码
- CSS字体和文本相关
- 奥维地图从服务器获取信息超时,2021奥维地图不能用了原因及解决办法
- 表贴电阻尺寸与什么有关_贴片电阻功率及封装尺寸
- 小旋风虚拟服务器怎么用,超级小旋风asp服务器软件使用图文教程
- python解析can报文_解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真
- html文本文档加图片格式,以图片格式呈现的文档怎么编辑文字
- Arduino引用第三方库ads1x15提示No such file or directory
- c语言控制51单片机完成交通信号灯(红绿灯)
- 【MySQL】创建数据库表
- java发送 NameValuePair格式post请求
- 数字图像处理与MATLAB 第四章学习笔记
- 线性拟合的 R2 和p值怎么计算
- C/C++实现循环左移,循环右移
热门文章
- gazebo入门_【ROS-Gazebo】仿真插件编写教程(1)——概述
- C++中的迭代器(STL迭代器)iterator
- 寒武纪招聘|智能驾驶类、算法类、软件类、芯片类等岗位(校招/社招)
- 实操教程|详细记录solov2的ncnn实现和优化
- StereoDRNet:基于stereo的三维重建网络
- 2021-07-12 深度学习服务器网络测试(顶会ECCV网络测试)
- c语言通过域组策略下发软件,windows 2008 server 域环境通过组策略下发计划任务(示例代码)...
- React history.push 传递参数
- OpenCV | OpenCV彩色图像直方图算法实现
- RDKit | 基于RDKit描述三维分子形状(3D描述符)