我们聊聊apply

96
xiao_dong_zi
2019.03.05 16:29* 字数 310

在R中常见的语法中,有apply , lapply , sapply, mapply , tapply

数据准备

library(MASS)

library(lattice)

library(spuRs)

data(ufc)

apply

apply是对应的聚合运算

a<-matrix(1:12,c(3,4))
apply(a,1,sum)   其中1,代表行,2 代表列运算

apply 作用就是吧一个纯数据的矩阵或者dataframe 进行横向和纵向的运算,当1 的时候,得到的数据是每行对列的运算,2 是指每列对行的运算。
当然也可以自己定义函数进行运算

apply(a,1,function(x) max(x)+1)

其中,进入函数的x 是指每一行或每一列的数据。

sapply lapply

这两个都是对一个list 中的不同变量进行相同的函数运算,输入函数的是一个向量,不过前者返回的是向量,后者返回的是list

The lapply(X, FUN, ...) function applies the function FUN to each element of the list X and returns a list

lapply(ufc[,1:2], mean) 每个向量返回的是一个数值

不建议两个list 同时传入进行运算,虽然也能进行运算但是会和mapply 进行混淆

mapply

两个list 同时进行运算,结果是笛卡尔集

a=data.frame(x=c(1,2,3),b=c(2,3,4))
mapply(function(x,y)x+y ,a$x ,MoreArgs = list(y =a$b))

第一个传入的变量成为返回的结果变量个数,
第二个Moreargs 传入的变量是遍历后每个变量的长度。

tapply

这个是聚合运算,根据一个index,进行计算

tapply(ufc$height.m, ufc$species, mean)
tapply(ufc$height.m, ufc[c('plot','species')],mean)
R 来吧
Gupao