R贱客之apply族

浏览: 1595

为什么贱客呢?主要是因为apply函数家族的几个函数经常容易搞混,有时候不知道该用哪个函数才合适呢?现在我就给咱们把apply函数家族细细说来,让这个贱客变成真正的剑客!

apply函数

apply(X, MARGIN, FUN, ...)
#FUN函数运用到x的第MARGIN维度上。MARGIN:1表示矩阵行,2表示矩阵列,c(1,2) 表示矩阵行和列。

操作对象:矩阵或数据框


  1. a<-matrix(1:12,nrow=3)  

  2. a  

  3. #求每列的平均值  

  4. apply(a,2,mean)

结果为:2  5  8 11

注意:

 我们也可以使用colMeans(),rowMeans( ),对矩阵的列和行分别求平均值,rowSums( ),colSums(),,对矩阵的列和行分别求和。如果数据中NA,那么在求行列的平均值或和的时候,NA所在的行列的计算结果也没NA。


lapply()函数

lapply(X, FUN, ...)

#把函数FUN运用到列表的每一个元素

操作对象:列表,数据框(不能用于矩阵或数组)


tapply函数

tapply(X, INDEX, FUN=NULL, …, simplify = TRUE)

#FUN函数根据INDEX索引应用到x数据上

操作对象:向量(或者具有相同索引的数据集)

sapply()函数

sapply(X, FUN, …, simplify = TRUE, USE.NAMES = TRUE)

#该函数比lapply函数更友好一些,可以使用simplify参数来调节输出的数据格式。

操作对象:向量

vapply函数

vapply(X, FUN, FUN.VALUE, …, USE.NAMES = TRUE)

#类似sapply函数,但返回值只能按照预先指定的方式输出。

操作对象:向量或者表达式对象,其余对象将被通过as.list强制转换为list。

mapply()函数

mapply(FUN, …, MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE)

#用于多变量情况。

其中MoreArgs参数:FUN函数的其他参数列表。SIMPLIFY参数:逻辑或者字符串,可以减少结果成为一个向量、矩阵或者更高维阵列,详见sapply的simplify参数。USE.NAMES参数:逻辑值,如果第一个参数…已被命名,将使用这个字符向量作为名字。

eapply函数

eapply(env, FUN, ...,all.names = FALSE, USE.NAMES = TRUE)

#env表示将要使用进行FUN计算后返回一个列表值,用户可以请求所有使用过的命名对象。

env参数:将被使用的环境。

all.names参数:逻辑值,指示是否对所有值使用该函数。

USE.NAMES参数:逻辑值,指示返回的列表结果是否包含命名。


rapply()函数

rapply(object, f, classes ="ANY", deflt = NULL,how = c("unlist", "replace", "list"),...)

#运用函数递归产生列表,classes参数:关于类名的字符向量,或者为any时则匹配任何类。deflt参数:默认结果,如果使用了how = “replace”,则不能使用。how参数:字符串匹配三种可能结果。


这里只是大概说一下,详细解释别忘了R里面的help()函数。

推荐 3
本文由 王亨 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册