




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西医外科学练习题
- 保洁员初级模拟试题
- 网络安全技术实践测试题
- 浙江国企招聘2025杭州市临安区城市发展投资集团有限公司下属子公司招聘8人笔试参考题库附带答案详解
- 2025福建武夷交通运输股份有限公司招聘10人笔试参考题库附带答案详解
- 2025年黄山旅游发展股份有限公司春季招聘75人笔试参考题库附带答案详解
- 青马试题填空题及答案
- 铲车路障考试题及答案
- 纺织品设计师证书试题及答案汇集
- 固废处理项目前景评估与策略分析
- (市质检)莆田市2025届高中毕业班第四次教学质量检测试卷语文试卷(含答案解析)
- 瓷砖空鼓装修合同协议
- 2025年四川筠连县国有资本投资运营有限公司招聘笔试参考题库含答案解析
- 2024年贵州遵义公开招聘社区工作者考试试题答案解析
- 中职生职业生涯课件
- 烟台2025年烟台市蓬莱区“蓬选”考选90人笔试历年参考题库附带答案详解
- 2025年全国低压电工证(复审)考试笔试试题(300题)含答案
- 2025年浙江省生态环境厅所属事业单位招聘考试备考题库
- 入团考试测试题及答案
- 【语文试卷+答案 】上海市崇明区2025届高三第二学期第二次模拟考试(崇明二模)
- 《中国古典文学中的咏花诗与审美文化》论文
评论
0/150
提交评论