R语言apply系列函数实例详解_第1页
R语言apply系列函数实例详解_第2页
R语言apply系列函数实例详解_第3页
R语言apply系列函数实例详解_第4页
R语言apply系列函数实例详解_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第R语言apply系列函数实例详解目录前言一、apply()函数二、lapply()函数三、sapply()函数四、tapply()函数五、mapply()函数总结

前言

在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]121518

apply(s,2,sum)

[1]61524

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

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

结果如下:

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

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

876.5458.6563.7179.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中的列表进行递归转换

s=TRUE#是否保留列表中的值名称

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

结果如下所示:

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

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

5.8433333.0573333.7580001.199333

三、sapply()函数

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

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

sapply(

X#向量、列表、表达式、数据库

FUN#应用的函数

...#额外参数,会被传递给fun函数

)

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

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

结果如下:

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

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

876.5458.6563.7179.9

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

如下例:

x-sapply(iris[,1:4],function(x){!--{C}%3C!%2D%2D%20%2D%2D%3E--x3})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)

12

2530

例中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)

setosaversicolorvirginica

250.3296.8329.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)

12

1311

2715

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

五、mapply()函数

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

mapply(

FUN#应用的函数

...#待传递的参数

)

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

mapp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论