返回顶部
首页 > 资讯 > 精选 >R语言apply系列函数如何使用
  • 602
分享到

R语言apply系列函数如何使用

2023-07-05 17:07:08 602人浏览 独家记忆
摘要

这篇文章主要讲解了“R语言apply系列函数如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“R语言apply系列函数如何使用”吧!R语言的循环效率并不高,所以并不推荐循环以及循环嵌套。

这篇文章主要讲解了“R语言apply系列函数如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“R语言apply系列函数如何使用”吧!

R语言的循环效率并不高,所以并不推荐循环以及循环嵌套。为了实现循环功能的情况下,兼顾效率,R语言提供了apply系列函数,用于对规则的数据进行函数式的迭代处理。

apply

apply函数作用于两个维度以上的数组或矩阵,其必要的输入参数有三,分别是待处理数据、用于循环的维度、处理函数,示例如下

data <- matrix(c(1:20), 5, 4)apply(data, 1, mean)# [1]  8.5  9.5 10.5 11.5 12.5

上述代码的含义是,对data的第一个维度,执行平均值mean操作,换言之,对每一行取平均值。data是5行4列的矩阵,每行取平均值,可得到拥有4个元素的向量。

apply也支持对多个坐标轴的数据进行操作,仍以data为例,若想对所有元素取根号,则可以写为下面这样,其结果于sqrt(data)相同

> apply(data, 1:2, sqrt)         [,1]     [,2]     [,3]     [,4][1,] 1.000000 2.449490 3.316625 4.000000[2,] 1.414214 2.645751 3.464102 4.123106[3,] 1.732051 2.828427 3.605551 4.242641[4,] 2.000000 3.000000 3.741657 4.358899[5,] 2.236068 3.162278 3.872983 4.472136

lapply, sapply, vapply

apply不能作用于一维数组,lapply和sapply补充了这一功能

> arr <- apply(data, 1, mean)> apply(arr, 1, sqrt)Error in apply(arr, 1, sqrt) : dim(X)的值必需是正数> sapply(arr, sqrt)[1] 2.915476 3.082207 3.240370 3.391165 3.535534> lapply(arr, sqrt)[[1]][1] 2.915476[[2]][1] 3.082207[[3]][1] 3.24037[[4]][1] 3.391165[[5]][1] 3.535534

从上面代码可知,二者主要区别是返回值,sapply会根据实际情况调整返回值,其返回逻辑为

  • 1个列表->向量

  • 多个长度相同的列表->矩阵,

  • 多个长度不同的列表->列表

相比之下,vapply可以更加灵活地选择输出数据类型

> vapply(arr, sqrt, numeric(1))[1] 2.915476 3.082207 3.240370 3.391165 3.535534

rapply

rapply可以处理嵌套列表,其与lappy的区别试一下就知道

> x <- list(1,2,c(1:5))> sapply(x, sqrt)[[1]][1] 1[[2]][1] 1.414214[[3]][1] 1.000000 1.414214 1.732051 2.000000 2.236068> rapply(x, sqrt)[1] 1.000000 1.414214 1.000000 1.414214 1.732051 2.000000 2.236068

换言之,rapply在执行的过程中,会不断地检查是否存在列表,如果存在列表,就把这个列表打开,其可用参数除了x, fun之外,还可指定处理的类别classes,以及处理方法how,how可选三个参数

  • "replace" 直接替换list中原来的元素

  • "list" 新建一个列表,元素类型复合classes则调用FUN

  • "unlist" 相当于对"list"模式下的结果调用unlist(recursive=TRUE)

tapply

tapply可对输入数据进行分组操作,下面以鸢尾花数据作为示例,来体验一下tapply的用法

> tapply(iris$Sepal.Length, iris$Species, mean)    setosa versicolor  virginica      5.006      5.936      6.588

iris提供了三种鸢尾花的长度、宽度等数据,其中iris$Species为其种类信息。上面代码的含义是,对iris的长度,按照相同的Species取平均值。

mapply

mapply的使用逻辑是,对两组相同维度的数据进行某种函数操作,类似于执行下面的操作

for(i in 1:N){    func(L1[i], L2[i])}

下面以两种不同类别的鸢尾花做个示例

L1<-iris[iris$Species=="setosa",]L2<-iris[iris$Species=="virginica",]max(L1$Sepal.Length, L2$Sepal.Length)# 返回值为7.9,计算了所有数据中的最大值

下面通过mapply,可以发现对每种类别的50组数据进行了以一比对,并选择出了最大值

> mapply(max, L1$Sepal.Length, L2$Sepal.Length) [1] 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8[16] 6.4 6.5 7.7 7.7 6.0 6.9 5.6 7.7 6.3 6.7 7.2 6.2 6.1 6.4 7.2[31] 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8 6.7[46] 6.7 6.3 6.5 6.2 5.9

感谢各位的阅读,以上就是“R语言apply系列函数如何使用”的内容了,经过本文的学习后,相信大家对R语言apply系列函数如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: R语言apply系列函数如何使用

本文链接: https://lsjlt.com/news/353520.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • R语言apply系列函数如何使用
    这篇文章主要讲解了“R语言apply系列函数如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“R语言apply系列函数如何使用”吧!R语言的循环效率并不高,所以并不推荐循环以及循环嵌套。...
    99+
    2023-07-05
  • r语言median函数如何使用
    在R语言中,可以使用`median()`函数来计算一组数据的中位数。以下是使用`median()`函数的方法:1. 对向量使用`me...
    99+
    2023-09-15
    r语言
  • r语言annotate函数如何使用
    在R语言中,annotate()函数用于在绘图中添加注释。它的基本语法如下:annotate(text, x, y, ...)其中,...
    99+
    2023-09-13
    r语言
  • R语言中如何使用strsplit函数
    小编给大家分享一下R语言中如何使用strsplit函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、R语言strsplit用于分割字符串创建测试数据>&...
    99+
    2023-06-14
  • r语言中numeric函数如何使用
    在R语言中,numeric()函数用于创建一个指定长度的数值向量。以下是numeric()函数的使用方法:1. 创建一个长度为n的空...
    99+
    2023-09-04
    r语言 numeric
  • 如何在R语言中使用quantile()函数
    这期内容当中小编将会给大家带来有关如何在R语言中使用quantile()函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、求某个百分位比> data <- c...
    99+
    2023-06-14
  • 如何在R语言中使用lm函数
    如何在R语言中使用lm函数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在使用lm函数做一元线性回归时,发现lm(y~x+1)和lm(y~x)的结果是一致的,一直没找到两者之间...
    99+
    2023-06-08
  • r语言colnames函数怎么使用
    在R语言中,colnames()函数用于获取或设置数据框或矩阵的列名。下面是colnames()函数的使用方法: 获取列名:使用c...
    99+
    2023-10-23
    r语言
  • R语言如何使用函数barplot()创建条形图
    这篇文章将为大家详细讲解有关R语言如何使用函数barplot()创建条形图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。条形图表示矩形条中的数据,条的长度与变量的值成比例。 R语言使用函数 ba...
    99+
    2023-06-14
  • R语言中assign函数怎么使用
    在R语言中,`assign`函数用于将一个值指派给一个变量名。其使用格式如下:```Rassign(x, value, envir ...
    99+
    2023-10-09
    R语言
  • r语言中scale函数怎么使用
    在R语言中,scale函数用于对数据进行标准化处理。它可以将数据集的每个特征(列)进行标准化,使其均值为0,标准差为1。scale函...
    99+
    2023-09-13
    r语言
  • R语言中readtable函数怎么使用
    在R语言中,可以使用read.table函数来读取以制表符分隔的文本文件。read.table函数的基本用法如下:read.tabl...
    99+
    2023-09-13
    R语言
  • r语言中cumsum函数怎么使用
    cumsum函数用于计算累积和。它将依次对向量或矩阵的元素进行求和操作,并将每一步的结果保存。以下是cumsum函数的使用方法:1....
    99+
    2023-09-04
    r语言 cumsum
  • r语言函数是如何工作的
    在R语言中,函数是一段具有特定功能的代码块,可以被多次调用以执行相同的操作。函数通常由关键字function开始,后跟函数名称和参数...
    99+
    2024-03-06
    r语言
  • 如何在R语言中使用matrix函数生成矩阵
    今天就跟大家聊聊有关如何在R语言中使用matrix函数生成矩阵,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在R语言中可以使用matrix()函数来创建矩阵,其语法格式如下:matr...
    99+
    2023-06-08
  • Python 中如何使用apply函数
    这篇文章给大家介绍Python 中如何使用apply函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、介绍apply函数是pandas里面所有函数中自由度最高的函数。该函数如下:DataFrame.apply(fu...
    99+
    2023-06-04
  • R语言数据挖掘实战系列(3)
    R语言数据挖掘实战系列(3)三、数据探索        通过检验数据集的数据质量、绘制图表、计算某些特征量等手段,对样本数据集的结构和规律进行分析的过程就是数据探索。数据质量分析        数据质量分析的主要任务是检查原始数据中是否存在...
    99+
    2023-01-31
    实战 数据挖掘 语言
  • 怎么在R语言中使用cut()函数
    怎么在R语言中使用cut()函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、...
    99+
    2023-06-14
  • 怎么在R语言中使用summary()函数
    本篇文章为大家展示了怎么在R语言中使用summary()函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、源代...
    99+
    2023-06-14
  • r语言中的filter函数怎么使用
    在R语言中,`filter()`函数是`dplyr`包中的函数,用于筛选数据框中满足指定条件的行。`filter()`函数接受一个数...
    99+
    2023-09-04
    r语言 filter
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作