【R语言】apply函数族

在R语言中使用循环操作时是使用自身来实现的,效率较低。所以R语言有一个符合其统计语言出身的特点:向量化。R语言中的向量化运用了底层的C语言,而C语言的效率比高层的R语言的效率高。

apply函数族主要是为了解决数据向量化运算的问题,以提高运行效率

一、apply()函数

它是apply()函数族中最简单的函数,它的作用是将一个函数运用到矩阵或数组的某个维度。

此函数有3个参数:

  1. X:输入的数据,一般是矩阵或数据框;
  2. FUN:需要使用的函数;
  3. GARGIN:指定函数在哪个维度上运行。其中1表示行,2表示列;如果是数组,还可以是更大的数字。

1、apply()函数运用到矩阵 

x <- matrix(1:24, 6, 4)
x
# 计算每一行的最小值
apply(X=x, MARGIN=1, FUN=min)
# 计算每一列的平均值
apply(X=x, MARGIN=2, FUN=mean)

# 将x中的一个元素改为NA,然后计算每一行的最小值
x[2,4] <- NA
apply(X=x, MARGIN=1, FUN=min)
# 使用min()函数中删除缺失值的参数na.rm
apply(X=x, MARGIN=1, FUN=min, na.rm=TRUE)

如下结果所示,当x中有NA时,得到的结果也会是NA。 

 2、apply()函数运用到数组

x <- array(1:24, dim=c(4,3,2))
x
apply(x, MARGIN=3, FUN=mean)

当MARGIN参数为向量时

x <- array(1:24, dim=c(4,3,2))
x
apply(x, MARGIN=c(1,3), FUN=mean)

MARGIN=c(1,3)表示对第1维(行)和第3维(深度/层)进行操作,而保持第2维(列)不变。

借助以下代码辅助理解。 

x <- array(1:24, dim=c(4,3,2))
x
apply(x, MARGIN=c(1,3), FUN=paste, collapse="-")

也可以在apply()函数中使用自定义函数或匿名函数:

apply(x, MARGIN = 3, FUN =function(x){list(range=range(x),mean=mean(x))})

二、lapply()函数

此函数允许输入数据为原子向量或递归向量,并将函数应用于输入数据的每一个元素,输出结果为与输入数据长度相同的列表。

它的参数是X和FUN,意义与apply()函数的一致。

1、输入数据为向量时

x <- 1:5
lapply(x, function(x){x^3})

2、输入数据为矩阵时

lapply()函数会将FUN中的函数应用于每个值,而不是按照列或行进行应用。

y <- matrix(1:4, 2, 2)
y
lapply(y, min)

3、输入数据为列表时

z <- list(x)
z
lapply(z,function(z){z^3}) 

4、输入数据为数据框时

lapply()函数会将FUN中的函数应用于每一列。

a <- data.frame(x=1:4,y=5:8)
a
lapply(a,max)

三、sapply()函数

sapply()函数其实是lapply()函数的灵活版本,除了X和FUN这两个参数外,它还多了simplify和USE.NAMES两个参数。

simplify:默认为TRUE,表示要求输出的结果为向量或矩阵;也可以让其等于array,表示输出结果为数组。

USE.NAMES:默认为TRUE,表示当输入为字符串时,将以字符串为输出命名。

a <- data.frame(x=1:4,y=5:8)
a
# 当simplify和USE.NAMES都默认为TRUE时
sapply(a,max)

当输入为字符串且USE.NAMES为TRUE时:

b = letters[1:5]
sapply(b,function(x) paste(x,"-",x))

当simplify和USE.NAMES都为FALSE时,sapply()函数的输出结果与lapply()函数完全一致。

a
sapply(a,max,simplify=FALSE, USE.NAMES=FALSE)
lapply(a,max)

四、vapply()函数

此函数与sapply()函数类似,仅多了一个FUN.VALUE的参数,此参数表示指定返回值的类型和形状。

x <- list(a=1:4,b=5:8,c=9:13)
x
sapply(x, function(x){x+2})
vapply(x, function(x){x+2}, FUN.VALUE=numeric(4))

通过FUN.VALUE=numeric(4)将返回值的长度设为4,如果其中某个返回值的长度不为4($c),就会报错。 

五、mapply()函数

 mapply()函数是sapply()函数的多变量版本。

在sapply()函数中,FUN参数指定的函数只能同时接受一个向量,而mapply()函数中的FUN参数指定的函数可以同时接受多个向量

如下所示,FUN中指定的函数接受了两个向量:2:6和10:14

mapply(FUN=function(x,y) c(x+y,x*y),2:6,10:14)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

归一化与伪彩:LabVIEW图像处理的区别

在LabVIEW的图像处理领域&#xff0c;归一化&#xff08;Normalization&#xff09;和伪彩&#xff08;Pseudo-coloring&#xff09;是两个不同的概念&#xff0c;虽然它们都涉及图像像素值的调整&#xff0c;但目的和实现方式截然不同。归一化用于调整像素值的范围&#xff0c…

【3分钟极速部署】在本地快速部署deepseek

第一步&#xff0c;找到网站&#xff0c;下载&#xff1a; 首先找到Ollama &#xff0c; 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 &#xff0c;文件不是很大&#xff0c;下载也比较的快 第二部就是安装了 &#xff1a; 安装完成后提示…

论文阅读:MGMAE : Motion Guided Masking for Video Masked Autoencoding

MGMAE:Motion Guided Masking for Video Masked Autoencoding Abstract 掩蔽自编码&#xff08;Masked Autoencoding&#xff09;在自监督视频表示学习中展现了出色的表现。时间冗余导致了VideoMAE中高掩蔽比率和定制的掩蔽策略。本文旨在通过引入运动引导掩蔽策略&#xff0…

【Ai】--- 可视化 DeepSeek-r1 接入 Chatbox(超详细)

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Ai】--- 可视化 DeepSeek-r1 接入 Chat…

P1049 装箱问题(dp)

#include<bits/stdc.h> using namespace std;int main() {int v,n;cin>>v>>n;int a[30];int dp[20005];for(int i0;i<n;i){cin>>a[i];}memset(dp,0,sizeof(dp));// 设置所有元素为0&#xff0c;表示最大体积为0for(int i0;i<n;i){for(int jv;j&…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<7>

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 今天我们一起来学习转移表&#xff0c;回调函数&#xff0c;qsort… 目录 一、转移表1.1 定义与原理1.3…

声明式导航,编程式导航,导航传参,下拉刷新

1.页面导航 1.声明式导航 1.1跳转到tabBar页面 1.2跳转到非tabBar页面 1.2后退导航 、 2.编程式导航 2.1跳转到tabBar页面 2.1跳转到非tabBar页面 2.3后退导航 3.导航传参 3.1声名式导航传参 3.2编程式导航传参 3.3在onLoad中接受参数 4.下拉刷新 4.1回顾下拉刷新…

C++ Primer 递增和递减运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【C++高并发服务器WebServer】-13:多线程服务器开发

本文目录 一、多线程服务器开发二、TCP状态转换三、端口复用 一、多线程服务器开发 服务端代码如下。 #include <stdio.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <pthread.h>s…

重生之我要当云原生大师(十一)访问Linux文件系统

目录 一、解释下文件系统、块设备、挂载点、逻辑卷。 二、简述文件系统、块设备、挂载点、逻辑卷之间的关系&#xff1f; 三、如何检查文件系统&#xff1f; 四、挂载和卸载文件系统的流程&#xff1f; 五、find命令都可以根据什么查找文件。 一、解释下文件系统、块设备、…

NetCore Consul动态伸缩+Ocelot 网关 缓存 自定义缓存 + 限流、熔断、超时 等服务治理 + ids4鉴权

网关 OcelotGeteway 网关 Ocelot配置文件 {//单地址多实例负载均衡Consul 实现动态伸缩"Routes": [{// 上游 》》 接受的请求//上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法"UpstreamHttpMethod": [ "Get", &quo…

星网锐捷 DMB-BS LED屏信息发布系统taskexport接口处存在敏感信息泄露

星网锐捷 DMB-BS LED屏信息发布系统taskexport接口处存在敏感信息泄露 漏洞描述 福建星网锐捷通讯股份有限公司成立于2000年,公司秉承“融合创新科技,构建智慧未来"的经营理念,是国内领先的ICT基础设施及AI应用方案提供商。星网锐捷 DMB-BS LED屏信息发布系统taskexp…

国产高端双光子成像系统的自主突破

近年来&#xff0c;高端科研仪器的国产化受到越来越多的关注。在双光子成像系统这一关键领域&#xff0c;我们基于LabVIEW自主开发了一套完整的解决方案&#xff0c;不仅填补了国内空白&#xff0c;也在功能和性能上达到了国际领先水平。我们的目标是让国内科研机构和医疗行业拥…

Python多版本管理

关注后回复 python 获取相关资料 ubuntu18.04 # ubuntu18 默认版本 Python 2.7.17 apt install python python-dev python-pip# ubuntu18 默认版本 Python 3.6.9 apt install python3 python3-dev python3-pip# ubuntu18 使用 python3.8 apt install python3.8 python3.8-dev#…

详细教程 | 如何使用DolphinScheduler调度Flink实时任务

Apache DolphinScheduler 非常适用于实时数据处理场景&#xff0c;尤其是与 Apache Flink 的集成。DolphinScheduler 提供了丰富的功能&#xff0c;包括任务依赖管理、动态调度、实时监控和日志管理&#xff0c;能够有效简化 Flink 实时任务的管理和部署。通过 DolphinSchedule…

windows安装WSL完整指南

本文首先介绍WSL&#xff0c;然后一步一步安装WSL及Ubuntu系统&#xff0c;最后讲解如何在两个系统之间访问和共享文件信息。通过学习该完整指南&#xff0c;能帮助你快速安装WSL&#xff0c;解决安装和使用过程中的常见问题。 理解WSL&#xff08;Windows Subsystem for Linux…

kafka专栏解读

kafka专栏文章的编写将根据kafka架构进行编写&#xff0c;即先编辑kafka生产者相关的内容&#xff0c;再编写kafka服务端的内容&#xff08;这部分是核心&#xff0c;内容较多&#xff0c;包含kafka分区管理、日志存储、延时操作、控制器、可靠性等&#xff09;&#xff0c;最后…

【东莞常平】戴尔R710服务器不开机维修分享

1&#xff1a;2025-02-06一位老客户的朋友刚开工公司ERP服务器一台戴尔老服务器故障无法开机&#xff0c;于是经老客户介绍找到我们。 2&#xff1a;服务器型号是DELL PowerEdge R710 这个服务器至少也有15年以上的使用年限了。 3&#xff1a;客户反馈的故障问题为&#xff1a;…

win10 llamafactory模型微调相关① || Ollama运行微调模型

目录 微调相关 1.微调结果评估 2.模型下载到本地 导出转换&#xff0c;Ollama运行 1.模型转换&#xff08;非常好的教程&#xff01;&#xff09; 2.Ollama 加载GGUF模型文件 微调相关 1.微调结果评估 【06】LLaMA-Factory微调大模型——微调模型评估_llamafactory评估-C…

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具&#xff0c;包括文本型、图像类的一些AI实践&#xff0c;最近DeepSeek突然爆火&#xff0c;从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF&#xff0c;免费附件链接给出。 1 本地 1 本地部…