登录
首页精彩阅读R贱客之apply族
R贱客之apply族
2017-02-19
收藏

R贱客之apply族

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

apply函数

apply(X, MARGIN, FUN, ...)

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

操作对象:矩阵或数据框

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

a  

#求每列的平均值  

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()函数。


数据分析咨询请扫描二维码

客服在线
立即咨询