【R语言】apply函数族
在R语言中使用循环操作时是使用自身来实现的,效率较低。所以R语言有一个符合其统计语言出身的特点:向量化。R语言中的向量化运用了底层的C语言,而C语言的效率比高层的R语言的效率高。
apply函数族主要是为了解决数据向量化运算的问题,以提高运行效率。
一、apply()函数
它是apply()函数族中最简单的函数,它的作用是将一个函数运用到矩阵或数组的某个维度。
此函数有3个参数:
- X:输入的数据,一般是矩阵或数据框;
- FUN:需要使用的函数;
- 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)

相关文章:
【R语言】apply函数族
在R语言中使用循环操作时是使用自身来实现的,效率较低。所以R语言有一个符合其统计语言出身的特点:向量化。R语言中的向量化运用了底层的C语言,而C语言的效率比高层的R语言的效率高。 apply函数族主要是为了解决数据向量化运算的问题&#x…...
Retrieval-Augmented Generation,检索增强生成流程
RAG流程 用户输入接收 系统接收用户输入的查询问题或文本内容,例如“李白有哪些著名的作品?”用户输入可以通过自然语言处理(NLP)模型的输入端口或用户交互界面(如聊天应用、搜索引擎输入框等)接收。 查询…...
[AI][本地部署]离线升级后报ChromeDb错误
【背景】 升级了OpenWebUI,在离线环境下补足了很多需要的Package后终于成功启动了Backend的服务,但是一旦上传文件,就会报ChromaDb错误,少了Collection这一列云云。 【分析】 两个环境ChromaDb的版本不同,所以怀疑是…...
Pinocchio: 刚体动力学算法库介绍
Pinocchio 是一个高性能的开源刚体动力学计算库,广泛应用于机器人学研究与开发。它主要致力于提供高效、精确的运动学和动力学算法,实现机器人模型的建模、前向运动学、反向动力学、力动力学计算等功能。下面将详细介绍该库的一些关键特点和应用场景。 基…...
电商平台的设计与实现(代码+数据库+LW)
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统商品交易信息管理难度大,容错率低࿰…...
c#对接deepseek 聊天AI接口
注意:不是免费 对接文档:对话补全 | DeepSeek API Docs 注册地址:DeepSeek 申请key 在线请求示例 apifox deepseek - deepseek...
Node.js中http模块(二)
一、http模块 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0) 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。 二、域名和域名服务器 尽管 I…...
主流顶级域名服务商ZDNS连续十余年跟进国际顶级域名政策制定
顶级域名(TLD,Top-Level Domain)是域名层次结构中的最高层,位于域名最后一段,也即最右边的点(.)之后的字符。品牌顶级域名是顶级域名的一种,以品牌相关名称命名,由品牌所属企业申请、运营、并自由分配二级域名,能够直接反映企业或品牌的形象和特色,如.citic、.中信、.baidu、.联…...
低至3折,百度智能云千帆宣布全面支持DeepSeek-R1/V3调用
DeepSeek-R1和 DeepSeek-V3模型已在百度智能云千帆平台上架 。 出品|产业家 新年伊始,百度智能云又传来新动作 。 2月3日百度智能云宣布, DeepSeek-R1和 DeepSeek-V3模型已在百度智能云千帆平台上架,同步推出超低价格方案,并…...
解释一下数据库中的事务隔离级别,在 Java 中如何通过 JDBC设置事务隔离级别?
数据库中的事务隔离级别是用于控制并发事务之间相互影响的一种机制。 它定义了事务之间的可见性和影响范围,常见的隔离级别包括: 读未提交(Read Uncommitted):最低的隔离级别,事务中的修改即使没有提交也…...
【自动化测试】使用Python selenium类库模拟手人工操作网页
使用Python selenium类库模拟手人工操作网页 背景准备工作安装Python版本安装selenium类库下载selenium驱动配置本地环境变量 自动化脚本输出页面表单自动化填充相关代码 背景 待操作网页必须使用IE浏览器登录访问用户本地只有edge浏览器,通过edge浏览器IE模式访问…...
【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据
利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…...
PostgreSql-COALESCE函数、NULLIF函数、NVL函数使用
COALESCE函数 COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的; select coalesce(1,null,2),coalesce(null,2,1),coalesce(null,null,null); NULLIF(ex1,ex2)函数 如果ex1与ex2相等则返回Null,不相等返回第一个表达式的值…...
springboot+vue导入ruoyi项目的框架
一、介绍 RuoYi-Vue版本,采用了前后端分离的单体架构设计软件环境:JDK、Mysql、Redis、Maven、Node技术选型: Spring Boot、Spring Security、MyBatis、Jwt、Vue3、Element-Plus官方地址: https://gitee.com/y_project/RuoYi-Vue 官方推荐的版本如下&a…...
金蛇祈福,鸿运开年!广州白云皮具城2025开市大吉!
锣鼓一响,黄金万两!2月6日大年初九,广州白云皮具城举行盛大的醒狮开市仪式!象征吉祥如意的醒狮,将好运、财运传递给全体商户和八方来客。 醒狮点睛 金鼓一响黄金万两,十头醒狮登台,董事总经理刘…...
DeepSeek本地化部署
文章目录 前言一、主机配置二、工具下载Ollama下载安装退出Ollama下载DeepSeek R1模型下载安装ChatBox实现可视化交互ChatBox设置模型 前言 最近的国产大模型DeepSeek横空出事,笔者也关注了下。网页版的免费而且推理速度很快,重量级的是它把自己详细的推…...
MoviePy,利用Python自动剪辑tiktok视频
Python剪辑视频是非常强大的,而且能流水线批量操作,可以使用MoviePy库实现。 最近看到一个Github项目,作者利用Python写了一个自动生成tiktok视频的脚本,受到热捧。 现在像抖音、tiktok上有很多流水线生产的视频,不少…...
ubuntu20.04+RTX4060Ti大模型环境安装
装显卡驱动 这里是重点,因为我是跑深度学习的,要用CUDA,所以必须得装官方的驱动,Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/,选择类型,最新版本下载。 挨个运行&#…...
2024~2025学年佛山市普通高中教学质量检测(一)【高三数学】
一、选择题 本题共8小题,每小题5分,共40分。在每小题给出的四个选项中。只有一项是符合题目要求的。 1、若 5 z 2 i 1 \frac{5}{z}2i1 z52i1,则 z z z A. 1-2i B. 12i C. 2-i D. 2i2、已知集合 A { x ∣ 1 < x < a } A\left\{…...
管理etcd的存储空间配额
如何管理etcd的存储空间配额 - 防止集群存储耗尽指南 本文基于etcd v3.4官方文档编写 为什么需要空间配额? 在分布式系统中,etcd作为可靠的键值存储,很容易成为系统瓶颈。当遇到以下情况时: 应用程序频繁写入大量数据未及时清理…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
