R语言apply系列函数实例详解

 更新时间:2022年12月02日 09:10:01   作者:Bio大恐龙  
apply()函数是一种很强大的机制,下面这篇文章主要给大家介绍了关于R语言apply系列函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

在R语言中,apply系列函数可以对向量、矩阵、数据框一次性对整体数据应用函数运算,非常方便

一、apply()函数

定义:apply()函数按矩阵的行或列方向应用指定函数。

apply(
  x # 数组或矩阵
  MARGIN #应用函数的方向,1行2列 
  FUN # 应用的函数
)
# 返回值根据数据Data的数据类型与Fun的返回值自动判断返回的数据类型

这里举个例子:

s <- matrix(1:9,ncol = 3)
apply(s,1,sum)
apply(s,2,sum)

即可得到下列结果:

apply(s,1,sum)
[1] 12 15 18
apply(s,2,sum)
[1]  6 15 24

在举一个R语言自带的鸢尾花数据集例子:

apply(iris[,1:4],2,sum)

结果如下:

apply(iris[,1:4],2,sum)
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
       876.5        458.6        563.7        179.9 

如果小伙伴们对鸢尾花数据集不了解可以输入iris查看。

于此同时R语言中还定义了rowSums(),rowMeans(),colSums(),colMeans()函数对行列进行求和、均值的函数。使用方式也很简单。

二、lapply()函数

定义:lapply()函数以列表的形式返回函数的结果

lapply(
  X #向量、列表、表达式、数据库
  FUN #应用的函数
  ... #额外参数,会被传递给fun函数
)

继续使用鸢尾花数据集举例:

lapply(iris[,1:4],mean)

结果如下:

lapply(iris[,1:4],mean)
$Sepal.Length
[1] 5.843333

$Sepal.Width
[1] 3.057333

$Petal.Length
[1] 3.758

$Petal.Width
[1] 1.199333

可以看到结果以列表的形式返回,可以使用unlist()函数将结果转换为向量。

unlist(
  #将列表转换为向量
  X #R对象
  recursive = FALSE #是否对x中的列表进行递归转换
  use.names = TRUE #是否保留列表中的值名称
)
unlist(lapply(iris[,1:4],mean))

结果如下所示:

unlist(lapply(iris[,1:4],mean))
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    5.843333     3.057333     3.758000     1.199333

三、sapply()函数

sapply()函数与lapply()函数类似,其结果以矩阵、向量的数据类型返回。

定义:向列表,向量、表达式数据等应用指定函数,然后以向量或矩阵形式返回结果。

sapply(
  X #向量、列表、表达式、数据库
  FUN #应用的函数
  ... #额外参数,会被传递给fun函数
)

同样使用鸢尾花数据集作为例子:

sapply(iris[,1:4], sum)

结果如下:

sapply(iris[,1:4], sum)
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
       876.5        458.6        563.7        179.9 

当fun函数只有一个返回值,sapply()函数返回的就是包含这些值的向量。如果fun函数的结果时大于1的向量,则sapply()函数会返回矩阵。

如下例:

x <- sapply(iris[,1:4], function(x) {<!--{C}%3C!%2D%2D%20%2D%2D%3E-->x >3})class(x)

结果如下:

class(x)
[1] "matrix"

数据如下图所示:

四、tapply()函数

定义:根据给定的标准,对向量中保存的数据进行分组,然后对各分组应用指定函数,并返回结果。

tapply(
  X #向量
  INDEX #数据分组索引
  FUN #应用的函数
  ... #额外参数
)

举个例子:

tapply(1:10,rep(1:2,5),sum)

结果如下图:

tapply(1:10,rep(1:2,5),sum)
 1  2 
25 30 

例中1:10表示的是数据1到10,rep(1:2,5)表示将1到2重复5次。1,3,5,7,9属于1分组,2,4,6,8,10属于2分组。对它们进行求和,得到上诉结果。

以鸢尾花数据集举例:

tapply(iris$Sepal.Length,iris$Species,sum)

结果如下所示:

tapply(iris$Sepal.Length,iris$Species,sum)
    setosa versicolor  virginica 
     250.3      296.8      329.4 

建立一个销售数据:

m <- matrix(1:8,ncol = 2,
            dimnames = list(c("春","夏","秋","冬"),
                            c("female","male")))

对该数据秋上下半年与性别分别秋销售之和。

代码如下:

tapply(m, list(c(1,1,2,2,1,1,2,2),
               c(1,1,1,1,2,2,2,2)), sum)

结果如下所示:

tapply(m, list(c(1,1,2,2,1,1,2,2),
+                c(1,1,1,1,2,2,2,2)), sum)
  1  2
1 3 11
2 7 15

这里是将各个数据的位置建立索引进行分组,而后进行求和。

五、mapply()函数

定义:以列表或向量形式给出的参数传递给指定函数,并返回函数执行结果。

mapply(
  FUN #应用的函数
  ... #待传递的参数
)

继续使用鸢尾花数据集举例(哈哈哈):

mapply(sum,iris[,1:4])

结果如下:

mapply(sum,iris[,1:4])
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
       876.5        458.6        563.7        179.9 

总结

到此这篇关于R语言apply系列函数的文章就介绍到这了,更多相关R语言apply函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • R语言3.6.3安装超详细教程附安装包

    R语言3.6.3安装超详细教程附安装包

    这篇文章主要介绍了R语言3.6.3安装教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • R语言科学计算RcppArmadillo简明手册

    R语言科学计算RcppArmadillo简明手册

    这篇文章主要为大家介绍了R语言科学计算RcppArmadillo的简明手册,内容非常详细全面,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • R语言中R-squared与Adjust R-squared参数的解释

    R语言中R-squared与Adjust R-squared参数的解释

    这篇文章主要给大家介绍了关于R语言中R-squared与Adjust R-squared两个参数的相关资料,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言的一个加法函数使用介绍

    R语言的一个加法函数使用介绍

    这篇文章主要介绍了R语言的一个加法函数使用介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言-summary()函数的用法解读

    R语言-summary()函数的用法解读

    这篇文章主要介绍了R语言-summary()函数的用法解读,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言绘图样式设置操作(符号,线条,颜色,文本属性)

    R语言绘图样式设置操作(符号,线条,颜色,文本属性)

    这篇文章主要介绍了R语言绘图样式设置操作(符号,线条,颜色,文本属性),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • R语言数据的输入和输出操作

    R语言数据的输入和输出操作

    这篇文章主要介绍了R语言数据的输入和输出操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言实现操作MySQL数据库

    R语言实现操作MySQL数据库

    这篇文章主要介绍了R语言实现操作MySQL数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言环状热力图的画法

    R语言环状热力图的画法

    环状热力图是一种以环状布局展示数据的可视化方法,本文主要介绍了R语言环状热力图的画法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • R语言的特点总结

    R语言的特点总结

    在本篇内容里小编给大家整理的是一篇关于R语言的特点总结内容,有需要的朋友们可以学习参考下。
    2021-03-03

最新评论