• apply() 函数家族介绍


    apply() 函数算是R语言中很基础的一个函数,同时还有 sapply()  lapply()  tapply() 函数精简了 apply() 函数的用法。

    apply() 函数是一个很R语言的函数,可以起到很好的替代冗余的for循环的作用,R语言中的循环操作for和while都是基于R语言本身来实现的,而向量操作是基于底层的C语言函数实现的,所以使用apply()函数家族进行向量计算时高性价比的。

    apply() 函数可以面向数据框、列表、向量等,同时任何函数都可以传递给 apply() 函数。

    apply() 函数

    apply()函数的用法如下

    apply(X, MARGIN, FUN)
    其中:
    X:一个数据或者矩阵
    MARGIN:两个数值1或者2决定对哪一个维度进行函数的计算,MARGIN没有默认值
    MARGIN = 1  基于行进行操作
    MARGIN = 2  基于列进行操作
    MARGIN = c(1, 2)  对行和列都进行操作
    FUN:使用哪种操作,内置的函数有mean() medium() sum() min() max() 当然还有用户自定义的函数

     lapply() 函数

    lapply() 函数中多出来的 l 代表的意思是 list。所以 lapply() 和 apply() 的区别在于输出格式,lapply() 的输出格式是一个 list,所以 lapply() 函数不需要 MARGIN 参数。

    lapply(X, FUN)
    其中:
    X:一个向量或者一个对象
    FUN:对X中的每个元素进行操作的函数

     由于 lapply() 的输出结果是以 list 形式给出的,为了方便,我们使用 unlist() 函数进行整合。

    sapply() 函数

    sapply() 函数做的事情和 lapply() 函数是一样的,可以理解为是一个简化的 lapply(),返回的是一个向量(vector),使得对解读更加友好,其使用方法和 lapply() 一样。

    sapply() 多了两个参数:

    simplify:simplify = T 可以将输出结果数组化;simplify = F 此时输出结果和 lapply() 一样

    use.NAMES = T 可以设置字符串的为字符名

    tapply() 函数

    tapply() 函数是一个拓展函数,可以对一个向量里面进行分组统计操作。

    类似于 dplyr 包中的 group_by() + summarise()

    tapply(X, INDEX, FUN = NULL)
    其中
    X:一个对象,一般是向量
    INDEX:一个包含分类因子的列表(list)
    FUN:对X里面每个元素进行操作的函数

    数据分析的一部分工作就是分组进行统计,举例来说,根据一个特性来对一个群体进行分组计算平均值。

     使用 dplyr 包的操作如下

  • 相关阅读:
    转 : jmeter分布式测试的坑
    Node.js 事件循环
    ubuntu 16.04 安装nodejs
    java中native的用法
    分布式与集群的概念区别
    IntegerToBinaryString
    Mysql InnoDB事务
    浅析Mysql InnoDB存储引擎事务原理
    Mysql数据库事务的隔离级别和锁的实现原理分析
    MySQL中MyISAM和InnoDB的区别
  • 原文地址:https://www.cnblogs.com/0820LL/p/11664437.html
Copyright © 2020-2023  润新知