在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族函数详解相关推荐

  1. R语言apply族函数

    R语言有很重要的apply族函数:lapply sapply apply tapply mapply.这些函数底层通过C实现,效率比手工遍历高效.apply族函数是高效能计算的运算向量化(Vector ...

  2. c语言中快排函数,c语言快排函数详解

    c语言快排函数详解 int cmp(const void *a, const void *b) 返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 ...

  3. C语言-入门级别函数详解

    C语言-入门级别函数详解 写在开始 关于函数 1. 函数的定义形式 2.函数的声明 3. 返回语句 4.函数参数 4.1 形式参数(传值调用) 4.2 实际参数(传址调用) 4.3无参数 5.函数的调 ...

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

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

  5. R语言中apply系列函数详解

    文章目录 apply lapply, sapply, vapply rapply tapply mapply R语言系列: 编程基础

  6. C语言qsort快速排序函数详解

    直接进入主题,在c语言中qsort函数是用来快速排序的,qsort有4个参数,分别是数组地址,数组元素个数,数组元素字节大小和一个比较数组元素的函数指针.让我来看一下官方给出的使用标准,上图: 让我们 ...

  7. 【C语言】字符串函数详解

    hello~~,我是~小鹿 ,这是我的第一篇博客,没有循序渐进从基础开始写,只是最近在学习这里就写了,比较随心吧.希望这一篇博客能够给你带来帮助,之后也会继续写的,只是可能没有循序渐进,会比较杂七杂八 ...

  8. R语言绘图patchwork拼图详解快速实现组合图拼接

    pdf教程下载 此文内容来自微信公众号:R语言搬运工,扫码关注公众号浏览更多精彩内容** 我们在实际科研绘图或者写报告的时候,往往会同时出多幅统计图,如何将他们拼在一起是即将或者正在面临的问题.R语言 ...

  9. c语言编写printf函数,C语言之printf函数详解

    一  基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...

  10. R语言图像处理EBImage包详解

    > 本文摘自<Keras深度学习:入门.实战及进阶>第四章部分章节. ## 什么是EBImage EBImage是R的一个扩展包,提供了用于读取.写入.处理和分析图像的通用功能,非常 ...

最新文章

  1. 基于onnx的人脸识别
  2. python学起来难不难-零基础学Python爬虫难不难?要怎么学?
  3. cygwin编译verilator_Sublime text3 + Verilator 实现自动语法检错
  4. js获取浏览器活跃页面,切换tab页状态
  5. storm集群操作指南
  6. Python学习笔记 -- 第一章
  7. 不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络
  8. 最新版 | 李沐《动手学深度学习》中文版pdf重磅开源!
  9. vim python 代码提示_linux vim 编写代码python使用tab补全
  10. 一到九乘法口诀VB源码
  11. 五子棋c语言编程软件,C语言实现五子棋游戏
  12. Java POI PPT 转 PNG 图片设置背景色失效
  13. 项目开发流程及开发模式
  14. C#基础编程——简介及基础语法
  15. Ramnit感染型病毒创建傀儡进程的方法
  16. 百度搜索Referer API产品下线了,以后无法获取入站百度搜索词了。
  17. #C++我的武器库系列#之远控核心技术实现
  18. 格式塔理论主要是用计算机,格式塔理论在UI设计中的运用
  19. 腾讯云从业者认证考试内容 分享腾讯云架构tca考试题
  20. 本科生学深度学习-史上最容易懂的RNN文章

热门文章

  1. Invalid bound statement (not found): org.seckill.dao.Suc
  2. 2021-2027中国家具门立柱市场现状及未来发展趋势
  3. 孩子沉迷游戏,家长该怎么办?
  4. 使用three建立一个正方体
  5. 前端实现base64解码编码
  6. Sina weibo新浪微博 API返回信息详解
  7. 服务器 uefi 安装win7系统,uefi模式安装win7最新教程
  8. 【HTML】讲讲对HTML5的语义化的理解
  9. Android 隐藏APP图标
  10. matlab特征值意义,特征值 - MATLAB Simulink - MathWorks 中国