R语言 | 认识apply家族

news2025/1/13 15:55:48

目录

一、apply()函数

二、sapply()函数

三、lapply()函数

四、tapply()函数

​五、iris鸢尾花数据集


R语言提供了一个循环系统称apply家族,它具有类似for循环的功能,但是若想处理相同问题,apply家族函数好用太多了。

一、apply()函数

apply()函数主要功能是将所设定的函数应用到指定对象的每一行或列。它的基本使用格式如下:

apply(x,MARGIN,RUN,...)

x:要处理的对象,可以是矩阵、N维数组、数据框。

MARGIN:如果是矩阵则值为1或2,1代表每一行,2代表每一列。

FUN:要使用的函数。

...:FUN函数所需的额外参数。

二、sapply()函数

apply()函数尽管好用,但主要是用在矩阵、N为数组、数据框,若是面对向量,列表呢?此时可以使用sapply()(注:数据框数据也可用),此函数开头是s,是simplify的缩写,表示会对执行结果的对象进行简化。sapply()函数的使用格式如下:

sapply(x,FUN,...)

 x:要处理的对象,可以是向量、数据框或列表。

FUN:要使用的函数。

...:FUN函数所需的额外参数。

sapply这个函数所返回的数据必要时皆会被简化,简化原则如下:
1.如果处理完列表、数据框或向量后,返回是一个数字,则返回结果会被简化为向量

2.如果处理完列表、数据框后,返回的向量有相同的长度,则返回结果会被简化为矩阵

3.如果是其他状况则返回是列表。 

三、lapply()函数

lapply()函数的使用方法与sapply()函数几乎相同,但是lapply()函数的首字母l是list的缩写,表示lapply()函数所传回的是列表。lapply()函数的使用格式如下:

lapply(x,FUN,...)

x:可以是向量、数据框和列表。

FUN:预计使用的函数。

...:FUN函数所需的额外参数。

如果我们在sapply()函数内增加参数“simplify”,同时将它设为FALSE,则会获得与lapply()函数相同的返回结果。

 

四、tapply()函数

tapply()函数主要是用于一个因子或因子列表,执行指定的函数,最后获得汇总信息。

tapply()函数的使用格式如下:

tapply(x,INDEX,FUN,...)

x:是要处理的对象,通常是向量变量,也可是其他数据类型的数据。

INDEX:因子或分类的字符串向量或因子列表。

FUN:要使用的函数。

...:FUN函数所需的额外参数。

 下面使用R语言内建的数据state.region,计算美国4大区包含的各州的数量。

使用R语言内建的数据state.region和state.x77,计算美国4大区百姓的平均收入。

 

 五、iris鸢尾花数据集

iris中文是鸢尾花,这是系统内建的数据框数据集,内含150个记录,如下:

下面是前6个记录:

 下面使用lapply()函数列出iris数据集的元素类型:

上述实例返回列表数据,而sapply()函数可以简化传回数据:

下面计算每字段的平均值:

上述实例虽然计算出来各字段的平均值,但出现了Warning message,主要是因为“Species”字段内容是因子,不是数值,为了解决这个问题,可以在sapply()函数内设计一个函数判别各字段是否是数值,如果不是则传回NA。

特别留意iris数据集的Species字段的数据是因子类型,所以可以使用tapply()函数执行各类数据运算。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐藏加密文件夹怎么找到?看这里就够了!

当隐藏遇到加密,可以很好地保护电脑文件夹数据安全,那么隐藏加密的文件夹该怎么找到呢?方法其实很简单,下面我们通过两款提供文件夹隐藏加密的软件来了解一下。 文件夹加密超级大师 作为一款能够提供5种文件夹加密类型的软件&…

Java线程池七个参数详解:核心线程数、最大线程数、空闲线程存活时间、时间单位、工作队列、线程工厂、拒绝策略

ThreadPoolExecutor是JDK中的线程池实现,这个类实现了一个线程池需要的各个方法,它提供了任务提交、线程管理、监控等方法。 下面是ThreadPoolExecutor类的构造方法源码,其他创建线程池的方法最终都会导向这个构造方法,共有7个参…

什么是网络——TCP/IP协议

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

聚观早报 | 科大讯飞称10月整体赶超ChatGPT;苹果遭欧盟警告

今日要闻:科大讯飞称10月整体赶超ChatGPT;苹果遭欧盟警告;科研人员研发纳米粒子治疗癌症;中小学教材不得夹带商业广告;Z-Library又被美国FBI查封了 科大讯飞称10月整体赶超ChatGPT 5 月 6 日,科大讯飞董事…

JS判断用户终端与CSS判断用户终端的写法(源代码实例)

当用户使用手机等移动终端访问网站时,我们可以通过程序检测用户终端类型,如果是手机用户,则引导用户访问适配手机屏幕的移动站点。 JS判断用户终端: // 判断浏览器类型 myBrowser() {var userAgent navigator.userAgent; //取得…

Python每日一练(20230508) 石子游戏 I\II\III

目录 1. 石子游戏 Stone Game I 2. 石子游戏 Stone Game II 3. 石子游戏 Stone Game III 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 石子游戏 Stone Game I Alice 和 Bob 用几堆…

数字化转型对企业的好处有哪些(下)

过时的技术、流程和客户关系管理困难是当前阻碍企业增长的主要障碍,CRM系统是企业数字化转型的主要工具,帮助企业简化操作、提高效率,为客户提供更加卓越的客户体验。下面说说,企业数字化转型的十大好处。 5、提升竞争力 数字技…

HQChart实战教程61-自定义十字星K线颜色

HQChart实战教程61-自定义平盘K线颜色 十字星步骤1. 注册事件2. 监听回调函数阐述说明HQChart插件源码地址完整的demo源码十字星 十字星是一种K线基本型态。十字星,是一种只有上下影线,没有实体的K线图。开盘价即是收盘价,表示在交易中,股价出现高于或低于开盘价成交,但收…

asp.net+sqlserver社区居民健康档案管理系统

社区居民健康档案管理系统1 摘 要1 1 课题背景及研究内容1 1.1 课题背景和意义1 1.2 研究现状1 1.3 论文结构安排1 2 系统开发环境3 2.1开发工具介绍3 2.1.1 Visual Studio介绍3 2.1.2 SQL Server介绍4 2.1.3 IIS介绍4 2.2 动态网站技术介绍4 2.3开发模式B/S介绍4 2.4 AS…

【云台】开源版本SimpleBGC的传感器校准与姿态融合

传感器校准 俄版云台使用的是 MPU6050,磁力计使用的是 HMC5883 MPU6050校准 MPU6050校准包含两部分:加速度计与陀螺仪。校准过程想要校准出的数据也就是加速度计与陀螺仪的温漂与零漂。 正常来说,如果将 IMU 朝上静置,加速度计…

SSM框架学习-Spring Framework系统架构

Spring是一个用来管理对象的技术; 上层需要依赖下层的支持; 面向切面编程:在不影响原始程序的基础上,增强功能; 提供数据访问与集成:说明兼容其它方式访问数据; Transactions:事务控…

第四十章 Unity 按钮 (Button) UI

本章节我们介绍一下按钮UI。首先,我们创建一个新的场景“SampleScene3.unity”。然后,在菜单栏中点击“GameObject”->“UI”->“Button”,截图如下 我们选中刚刚创建的Button,然后查看它的Inspector检视面板,如…

SonarQube Api调用指南

好几年前写过一篇sonar api调用的文档,很多人看,但是当时写的比较简陋,很多小伙伴在下方留言,也答应过一些小伙伴些一篇示例,本文主要目的是一篇扫盲贴。 一、接口文档 要使用sonarqube的api接口,你首先要…

递归递推练习题答案

1.用递归的方法123…N的值(in:5,out:15) def dg(n):if n1:return 1else:return dg(n-1)n nint(input()) print(dg(n))2.输出斐波那契数列的第N项,0,1,1,2,3,5,8&#xf…

GIT:git 教程

1. 版本控制 版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看和备份。 它的作用如下: 实现跨区域多人协同开发。追踪和记载一个或者多个文件的历史记录。组织和保护你的源代码和文档。统计工作量。并行开…

Java EE企业级应用开发(SSM)第9章

第9章MyBatis入门 一.预习笔记 1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0:导…

RFID安全的三次认证

一.RFID介绍 RFID是Radio Frequency Identification的缩写,即射频识别。它是一种通过用电磁场收集数据并从远距离自动识别物体的技术。它使用无线电波来将信息从一个电子标签传输到读卡器中,而不需要直接接触。这些标签可以嵌入到物品中或附加到物品表面…

用Python给模板邮件加彩蛋

需求是这样来的,笔者写了很多的邮件通知模板,里面的内容都是千篇一律的,比如说,***你好,请查收附件什么什么报告,然后在署名,结束。这样的模板邮件会一直发下去,用户看久了会很单调。…

基于C#制作的锁屏小工具,点击图片内容解锁

自己制作的一个无厘头电脑锁屏工具被同事发现了,纷纷要求给他们量身定制安排一套 一、开发步骤1.1 创建项目1.2 窗体设置1.3 键盘钩子事件1.4 解锁按钮设置 一、开发步骤 1.1 创建项目 打开Visual Studio,右侧选择创建新项目。 搜索框输入winform&#…

makefile 结构规则,依赖,伪目标

文章目录 前言一、Makefile 规则格式二、依赖示例:依赖的规则 三、伪目标1. makefile 中的伪目标:2. 伪目标的语法3. 伪目标的规则调用4. 绕开 .PHONY关键字定义伪目标 四、小技巧:1. 命令无回显。2. 可执行文件 和 all 同时作为 makefie 中的…