在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)
网友评论