R语言apply族函数详解
来源:互联网 发布:生物医学大数据 编辑:程序博客网 时间:2024/05/17 22:01
在R语言中,apply系列函数的基本作用是对数组(array,可以是多维)或者列表(list)按照元素或元素构成的子集合进行迭代,并将当前元素或子集合作为参数调用某个指定函数。apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。
1、 apply函数
apply函数只能用于处理矩阵类型的数据,也就是说所有的数据必须是同一类型。因此要使用apply函数的话,需要将数据类型转换成矩阵类型。
apply函数一般有三个参数,第一个参数代表矩阵对象,第二个参数代表要操作矩阵的维度,1表示对行进行处理,2表示对列进行处理。第三个参数就是处理数据的函数。apply会分别一行或一列处理该矩阵的数据。
a<-matrix(1:12,nrow=3)a#求每列的平均值apply(a,2,mean)
其中a是一个3*4的矩阵,如下。运行结果为 2 5 8 11
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
我们也可以使用colMeans(),rowMeans( ),对矩阵的列和行分别求平均值,rowSums( ),colSums(),,对矩阵的列和行分别求和。
如过数据中NA,那么在求行列的平均值或和的时候,NA所在的行列的计算结果也没NA。
apply(a,1,mean,na.rm=TRUE)
这样的话,它会自动忽略NA,只计算其他不是NA的值。rowMeans( )中也可以添加na.rm=TRUE参数。效果相同。
#矩阵中添加了一个naa[2,1]<-NA#不计算NA存在的那一行或那一列apply(a,1,mean)
这个时候矩阵为
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] NA 5 8 11
[3,] 3 6 9 12
结果为[1] 5.5 NA 7.5。如果代码写成下面这个样子
apply(a,1,mean,na.rm=TRUE)结果为 5.5 8.0 7.5
2、lapply和sapply函数
lapply和sapply函数可以用于处理列表数据和向量数据(vector/list)。lapply函数得到处理得到的数据类型是列表,而sapply函数得到处理的数据类型是向量。这两个函数除了在返回值类型不同外,其他方面基本完全一样。
3、tapply函数
它通常会有三个参数,第一个参数代表数据,第二个参数表示如何对数据进行分组操作,第三个参数指定每一个分组内应用什么函数。也就是说tapply函数就是把数据按照一定方式分成不同的组,再在每一组数据内进行某种运算。
4、mapply函数
mapply函数主要是对多个列表或者向量参数使用函数
补充与:2017年1月8日
函数名称
使用对象
返回结果
apply()
对矩阵,数组或者数据框
向量,数组或者列表
lapply()
对列表,数据框或者向量
列表
sapply()
对列表,数据框或者向量
向量,数组或列表
tapply()
对不规则阵列
阵列
mapply()
对多个列表或者向量参数
列表
- R语言apply族函数详解
- 【R语言】apply函数族
- R语言 apply函数家族详解
- R语言 apply函数家族详解
- R语言 apply函数家族详解
- R语言 apply函数家族详解
- R语言apply函数族笔记
- R语言apply函数族笔记
- 掌握R语言中的apply函数族
- #R#R语言apply函数家族
- R语言中apply函数家族
- R语言中apply函数使用
- R语言中的循环函数(Apply)
- R语言之apply家族函数
- R语言学习 apply
- r语言常用函数apply及subset函数
- R:矩阵apply()函数
- R语言︱数据分组统计函数族——apply族用法与心得
- 关于接口的定义和使用,几点需要注意的问题
- #2016全球微服务架构高峰论坛
- JavaEE实战——Tomcat、web程序结构、Http协议、HttpUrlConnection
- Lowest Common Ancestor of a Binary Tree leetcode
- windows下jsp+mysql网站环境配置
- R语言apply族函数详解
- 近几年愿望单
- hdu 5842 Lweb and String(水题)
- MyEclipse+Struts+Hibernate+Mysql开发环境配置
- HDU 5835 Danganronpa(贪心)
- Centos 7 中文显示乱码解决办法
- javascript中的回调函数【理解记忆】
- 欢迎使用CSDN-markdown编辑器
- 【SSH】Struts2.3+Spring4.3+Hibernate3整合