R语言apply族函数详解
在R语言中,apply系列函数的基本作用是对数组(array,可以是多维)或者列表(list)按照元素或元素构成的子集合进行迭代,并将当前元素或子集合作为参数调用某个指定函数。apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。
1、 apply函数
apply函数只能用于处理矩阵类型的数据,也就是说所有的数据必须是同一类型。因此要使用apply函数的话,需要将数据类型转换成矩阵类型。
apply函数一般有三个参数,第一个参数代表矩阵对象,第二个参数代表要操作矩阵的维度,1表示对行进行处理,2表示对列进行处理。第三个参数就是处理数据的函数。apply会分别一行或一列处理该矩阵的数据。
a<-matrix(1:12,nrow=3)
a
#求每列的平均值
apply(a,2,mean)
其中a是一个3*4的矩阵,如下。运行结果为 2 5 8 11
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
我们也可以使用colMeans(),rowMeans( ),对矩阵的列和行分别求平均值,rowSums( ),colSums(),,对矩阵的列和行分别求和。
如过数据中NA,那么在求行列的平均值或和的时候,NA所在的行列的计算结果也没NA。
apply(a,1,mean,na.rm=TRUE)
这样的话,它会自动忽略NA,只计算其他不是NA的值。rowMeans( )中也可以添加na.rm=TRUE参数。效果相同。
#矩阵中添加了一个na
a[2,1]<-NA
#不计算NA存在的那一行或那一列
apply(a,1,mean)
这个时候矩阵为
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] NA 5 8 11
[3,] 3 6 9 12
结果为[1] 5.5 NA 7.5。如果代码写成下面这个样子
apply(a,1,mean,na.rm=TRUE)
结果为 5.5 8.0 7.5
2、lapply和sapply函数
lapply和sapply函数可以用于处理列表数据和向量数据(vector/list)。lapply函数得到处理得到的数据类型是列表,而sapply函数得到处理的数据类型是向量。这两个函数除了在返回值类型不同外,其他方面基本完全一样。
3、tapply函数
它通常会有三个参数,第一个参数代表数据,第二个参数表示如何对数据进行分组操作,第三个参数指定每一个分组内应用什么函数。也就是说tapply函数就是把数据按照一定方式分成不同的组,再在每一组数据内进行某种运算。
4、mapply函数
mapply函数主要是对多个列表或者向量参数使用函数
补充与:2017年1月8日
函数名称 |
使用对象 |
返回结果 |
apply() |
对矩阵,数组或者数据框 |
向量,数组或者列表 |
lapply() |
对列表,数据框或者向量 |
列表 |
sapply() |
对列表,数据框或者向量 |
向量,数组或列表 |
tapply() |
对不规则阵列 |
阵列 |
mapply() |
对多个列表或者向量参数 |
列表 |
R语言apply族函数详解相关推荐
- R语言apply族函数
R语言有很重要的apply族函数:lapply sapply apply tapply mapply.这些函数底层通过C实现,效率比手工遍历高效.apply族函数是高效能计算的运算向量化(Vector ...
- c语言中快排函数,c语言快排函数详解
c语言快排函数详解 int cmp(const void *a, const void *b) 返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 ...
- C语言-入门级别函数详解
C语言-入门级别函数详解 写在开始 关于函数 1. 函数的定义形式 2.函数的声明 3. 返回语句 4.函数参数 4.1 形式参数(传值调用) 4.2 实际参数(传址调用) 4.3无参数 5.函数的调 ...
- 「杂谈」如何写好R语言apply家族函数
感觉好久没发有关R语言的博客了.这一年来,我着手开发了两个R包,但基本没怎么发博客. 原因也很简单,可能是我个人的私心吧,或者说是典型的"理论研究者"的"通病" ...
- R语言中apply系列函数详解
文章目录 apply lapply, sapply, vapply rapply tapply mapply R语言系列: 编程基础
- C语言qsort快速排序函数详解
直接进入主题,在c语言中qsort函数是用来快速排序的,qsort有4个参数,分别是数组地址,数组元素个数,数组元素字节大小和一个比较数组元素的函数指针.让我来看一下官方给出的使用标准,上图: 让我们 ...
- 【C语言】字符串函数详解
hello~~,我是~小鹿 ,这是我的第一篇博客,没有循序渐进从基础开始写,只是最近在学习这里就写了,比较随心吧.希望这一篇博客能够给你带来帮助,之后也会继续写的,只是可能没有循序渐进,会比较杂七杂八 ...
- R语言绘图patchwork拼图详解快速实现组合图拼接
pdf教程下载 此文内容来自微信公众号:R语言搬运工,扫码关注公众号浏览更多精彩内容** 我们在实际科研绘图或者写报告的时候,往往会同时出多幅统计图,如何将他们拼在一起是即将或者正在面临的问题.R语言 ...
- c语言编写printf函数,C语言之printf函数详解
一 基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...
- R语言图像处理EBImage包详解
> 本文摘自<Keras深度学习:入门.实战及进阶>第四章部分章节. ## 什么是EBImage EBImage是R的一个扩展包,提供了用于读取.写入.处理和分析图像的通用功能,非常 ...
最新文章
- 基于onnx的人脸识别
- python学起来难不难-零基础学Python爬虫难不难?要怎么学?
- cygwin编译verilator_Sublime text3 + Verilator 实现自动语法检错
- js获取浏览器活跃页面,切换tab页状态
- storm集群操作指南
- Python学习笔记 -- 第一章
- 不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络
- 最新版 | 李沐《动手学深度学习》中文版pdf重磅开源!
- vim python 代码提示_linux vim 编写代码python使用tab补全
- 一到九乘法口诀VB源码
- 五子棋c语言编程软件,C语言实现五子棋游戏
- Java POI PPT 转 PNG 图片设置背景色失效
- 项目开发流程及开发模式
- C#基础编程——简介及基础语法
- Ramnit感染型病毒创建傀儡进程的方法
- 百度搜索Referer API产品下线了,以后无法获取入站百度搜索词了。
- #C++我的武器库系列#之远控核心技术实现
- 格式塔理论主要是用计算机,格式塔理论在UI设计中的运用
- 腾讯云从业者认证考试内容 分享腾讯云架构tca考试题
- 本科生学深度学习-史上最容易懂的RNN文章
热门文章
- Invalid bound statement (not found): org.seckill.dao.Suc
- 2021-2027中国家具门立柱市场现状及未来发展趋势
- 孩子沉迷游戏,家长该怎么办?
- 使用three建立一个正方体
- 前端实现base64解码编码
- Sina weibo新浪微博 API返回信息详解
- 服务器 uefi 安装win7系统,uefi模式安装win7最新教程
- 【HTML】讲讲对HTML5的语义化的理解
- Android 隐藏APP图标
- matlab特征值意义,特征值
- MATLAB Simulink
- MathWorks 中国