R语言数据操纵:常用函数

这篇文章主要介绍R语言中处理循环,排序,总结重要信息的常用函数。

处理循环的函数

lapply函数

这个函数就是俗称的一句话循环函数,不同于while循环或者for循环,这个函数可以实现一句话就是一个循环的效果。

具体格式为lapply(列表名,函数,其它参数),其中列表名告诉lapply我们要处理的对象,如果传的不是列表而是向量等数据结构类型,lapply会自动转换成列表结构。第二个参数:函数告诉lapply要对列表进行怎样的操作。lapply的返回值是一个列表。

举个例子,创建一个名为x的列表

x包含两个元素,他们均为向量。接着使用lapply函数对x进行求平均值的操作(求平均值的函数是mean),结果如图

发现确实是求出了a元素和b元素的平均值

再来看一个例子,假如有一个向量x

runif的功能是从一个均匀分布的总体里抽取若干个数出来,默认是从0到100进行抽取。在上一个代码的基础上再加两个参数,表示从0到100中进行抽取。结果如图

借助lapply函数,我们只用一行代码就对列表x的每一个元素都进行了函数runif的处理。

lapply参数中的函数,还可以是我们自定义的函数,比如有这样的一个列表x

列表x包含两个元素,这两个元素均为矩阵,然后执行这句代码

我们发现此时lapply函数的对象是x,对x中每个元素要进行的操作由后面的函数决定,function(m)代表这是一个自定义函数,m类似于C语言中的形参,后面的m[1,]就是这个函数的功能,也就是C语言中的函数体,m[1,]表示提取m的第一行。在运行的时候lapply函数会用x列表的每一个元素依次替代掉m,因此这句代码的意思就是对列表x的每个元素(这里是x的元素是矩阵)进行提取第一行的操作,运行结果也的确如此。返回的是一个列表,第一个元素是一个向量,也就是x列表第一个元素的第一行,第二个元素也是一个向量,表示x列表第二个元素的第一行。

apply函数

apply用于沿着数组的某一维度处理数据,比如沿着矩阵的行或列进行处理。

函数原型为apply(数组,维度,函数/函数名)

举个例子

首先创建了一个简单的矩阵,然后对矩阵x的按列求平均值,其中第二个参数写2代表按照列进行处理。当然apply函数的功能远远不止于此,实际上对于矩阵x每列的和,平均值等等可以使用rowSums(x),rowMeans(x)这样的函数来更高效的实现。

quantile函数用于求百分位点,后面的probs参数表示要求的是0.25和0.75位点。

再来看一个更加复杂的例子

有一个三维的数组,第三个维度的第一个元素是一个两行三列的矩阵,第二,三,四个元素也是。对于这样一个三维的数据,怎么用apply函数呢?比如有这样一个代码与运行结果

我们知道apply的第二个参数代表维度,那为什么上面这个维度还成个向量了呢?难不成是又对第一个维度求平均值,又对第二个维度求平均值吗?从结果来看显然不是,因为如果是像上面说的那样对两个维度分别求平均值,结果应该是两个向量,就好像在空间直角坐标系当中对一些散点的横坐标和纵坐标分别求平均值一样,但是这里返回的结果是一个矩阵,因此实际上这样维度这个参数传c(1,2)的时候是在对几个矩阵求平均值,对哪几个矩阵求平均值呢?我们说三维数组在展示的时候都是站在第三个维度的视角来展示的,创建数组的时候第三个维度的数值是几,就展示几个矩阵,这里在创建数组x的时候第三个维度的数字是4,那就展示四个矩阵,而apply求得也是这四个矩阵的平均值。

或者说这样理解,传的维度是c(1,2),那就是要求这样一个维度的平均值,这代表二维的矩阵,那就是求这些矩阵的平均值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言数据结构专题--顺序表(1基础)

前言 我们在对C语言有一定的了解之后,我们就可以开始数据结构的学习了,数据结构多用指针、结构体、动态内存开辟等知识,若对这些知识还不太了解的朋友,就需要加深其理解了,那么废话不多说,我们正式开始本节…

36.基于CAS实现的java类

JUC, java.util.concurrent并发工具包下。 1.原子整数 AtomicInteger AtomicLong AtomicBoolean 底层用的CAS来实现。 AtomicInteger类的incrementAndGet方法,addAndGet方法 public static void main(String[] args) {AtomicInteger atomicInteger new Atom…

一文搞懂 ThreadLocal

简介 ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。 ThreadLocal的作用是提供线程内的局部变…

未授权访问-api接口

特别注意api接口的一些命名规则 常见的是这种,具体要看开发人员怎么命名的 而确认api路径的最好办法还是去多出发几个功能点,看他的路径,比如下面触发多个功能点 对比得知两个路径都有pyr/user/这时候可能就会觉得这就是api路径,但…

Azure的VFP和虚拟IP地址

Azure 的Virtual filtering platform (VFP) 是Azure 网络地址转换,端口转换和端口分配的基础。 下面我们来深入介绍一下VFP的工作方式。 VFP的出站动作。 对于客户端地址作为虚拟IP的出站目的地址的时候,VFP 驱动会负责做以下两个动作。 源地址转换。端口地址转换。VFP 和 S…

一分钟了解mos管选型

在选择MOS管时,需要考虑多个关键参数以确保选用的MOS管能够满足特定应用的需求。下面是一些主要参数的介绍 额定电压(Vds) 也称为漏源电压,通常我们所说的耐压,是指MOS管能够承受的最大电压差。 在选择MOS管时&#xf…

数据湖概述:大数据演进阶段-数据湖

文章目录 一. 大数据发展过程1. 离线大数据平台2. Lambda架构:速度层批层3. Kappa架构:流批一体4. 大数据架构痛点总结 二. 数据湖助力于解决数据仓库痛点问题1. 数据湖特点2. 开源数据湖的架构 三. 数据湖和数据仓库理念的对比1. 数据湖和数据仓库对比2…

c++的STL(7) -- stack

stack容器概述 stack容器其实是实现了一种和栈相同结构的容器。 如图,栈这种结构有两端: 栈底和栈顶。 特殊之处在于,这种结构,我们对数据的操作(删除数据,修改数据,查询数据,添加数据)只能在一端进行(栈…

TAB标签美化 - SVG作为mask

今天觉得V3的标签不是很好看,忽然想起来之前看过Vue Admin Beautiful Pro的样式挺好的,顺手研究了一把。发现Vue Admin Beautiful是采用PNGmask css来解决的。于是乎打算把V3的标签页做点小美化,但是迁移过程发生些小插曲,在此记录…

第1讲——预备知识

一、视觉SLAM十四讲在讲些啥 SLAM:Simultaneous Localization and Mapping 翻译:同时定位与地图构建 搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。 当特定传感…

Solidity入门1: 3. 函数类型

Solidity中的函数 solidity官方文档里把函数归到数值类型 函数结构 function <function name>(<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)] 看着些复杂&#xff0c;咱们从前往后一个一个看&…

【MySQL】:深入解析多表查询(上)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 多表关系1.1 一对多1.2 多对多1.3 一对一 二. 多表查询概述2.1 概述2.2 分类…

Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面&#xff0c;直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接&#xff1a;docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式&#xff0c;一直只是了解&#xff0c;没有亲自尝试过。结果今天在尝试 docker 的 …

『大模型笔记』LLMs入门:从头理解与编码LLM的自注意力机制

LLMs入门&#xff1a;从头理解与编码LLM的自注意力机制 这里直接引用我语雀上的的文章&#xff1a;《从头理解与编码LLM的自注意力机制》

科东软件参加广州机器人产业联盟举办先进工业母机专家研讨会

工业母机是“制造机器的机器”&#xff0c;具有基础性、通用性、战略性特征&#xff0c;包括了减材切削机床、等材成形装备、增材制造装备及其控制系统等&#xff0c;是衡量国家工业水平和竞争力的重要标志。广东省作为全球知名的制造业基地&#xff0c;非常重视高端装备领域工…

python 笔记

文章目录 pdbpdb开始调试pythonpdb设置断点单步执行进入到函数的内部执行到下一个断点或程序结束调用栈查看命令查看当前函数调用堆栈向上一层函数查看调用堆栈查看源代码 importimport 用法 numpy导入numpy模块numpy常用函数np.argmaxnp.sum range生成连续序列生成不连续序列 …

【随笔】Git 高级篇 -- 撤销变更(十四)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

如何使用 Midjourney?2024年最新更新

一&#xff1a;基础篇 1&#xff1a;注册 首先&#xff0c;你需要注册一个 Discord 账号&#xff0c;然后加入 Midjourney 的 Discord 服务器。或者去 Midjourney 的官网点击右下角的 Join the Beta&#xff1a; ​ 2&#xff1a;在 Discord 公共服务器里使用 注册并进入到…

一、Docker部署GitLab(详细步骤)

Docker部署GitLab&#xff08;详细步骤&#xff09; 一、拉取镜像二、启动容器三、修改配置四、修改密码五、浏览器访问 一、拉取镜像 docker安装教程&#xff1a;https://qingsi.blog.csdn.net/article/details/131270071 docker pull gitlab/gitlab-ce:latest二、启动容器 …