美文网首页
我们聊聊apply

我们聊聊apply

作者: xiao_dong_zi | 来源:发表于2019-03-05 16:29 被阅读0次

    在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)
    

    相关文章

      网友评论

          本文标题:我们聊聊apply

          本文链接:https://www.haomeiwen.com/subject/jzlouqtx.html