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 = 基于行进行操作
MARGIN = 基于列进行操作
MARGIN = c(, ) 对行和列都进行操作
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 包的操作如下

apply() 函数家族介绍的更多相关文章

  1. R语言中apply函数

    前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...

  2. js中bind、call、apply函数的用法

    最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...

  3. 博文推荐】Javascript中bind、call、apply函数用法

    [博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...

  4. JavaScript中bind、call、apply函数用法详解

    在给我们项目组的其他程序介绍 js 的时候,我准备了很多的内容,但看起来效果不大,果然光讲还是不行的,必须动手.前几天有人问我关于代码里 call() 函数的用法,我让他去看书,这里推荐用js 写服务 ...

  5. js中bind、call、apply函数的用法 (转载)

    最近看了一篇不错的有关js的文章,转载过来收藏先!!! 最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web 的项目,然后在腾讯实习的时候用 j ...

  6. pandas DataFrame apply()函数(2)

    上一篇pandas DataFrame apply()函数(1)说了如何通过apply函数对DataFrame进行转换,得到一个新的DataFrame. 这篇介绍DataFrame apply()函数 ...

  7. JavaScript中bind、call、apply函数使用方法具体解释

    在给我们项目组的其它程序介绍 js 的时候,我准备了非常多的内容,但看起来效果不大,果然光讲还是不行的,必须动手. 前几天有人问我关于代码里 call() 函数的使用方法.我让他去看书,这里推荐用js ...

  8. pandas.apply()函数

    1.介绍 apply函数是pandas里面所有函数中自由度最高的函数.该函数如下: DataFrame.apply(func, axis=0, broadcast=False, raw=False, ...

  9. Python apply函数

    Python apply函数 1.介绍 apply函数是pandas里面所有函数中自由度最高的函数.该函数如下: DataFrame.apply(func, axis=0, broadcast=Fal ...

随机推荐

  1. 百度前端技术学院task1 总结

    1.居中:当使用text-align或者vatical-align无法达到居中的时候,如果知道元素的大小,可以采用先设为left或right为50%,再设置margin-left或者margin-ri ...

  2. Java : JavaWeb和Tomcat相关

    部署:1.直接把项目移动到webapps文件夹下, 用文件夹名访问(如果ROOT文件夹可以直接访问)2.也可以把war包放到webapps文件夹下, tomcat自动解压,但是删除war包必须要停止t ...

  3. 【linux】【windows】查看你想访问的电脑Ip 和 端口是否 通畅

    常用查看IP是否通畅: 使用ping命令 ping 117.173.218.23 既想看IP又想看端口:使用telnet命令 telnet 117.173.218.23 9000 注意格式!!!

  4. .net core (领域事件,并发 for update) 工作内容记录

    这周工作,因为要对几个不同的表进行货币增加,锁定,所以 用了领域事件和并发 for update  ,先记录一下 领域事件 ,Dapper 事务 ,sql for update 这几个点 头大,最近工 ...

  5. Redis 分析部分功能所解决的问题

    前言:说到缓存,大家都会想到redis,而redis中又有各种眼花缭乱的功能,今天就来看看这些功能能解决的问题. Redis官方简介 Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存 ...

  6. Lock+Condition实现机制

    前言:大部分多线程同步场景,在功能和性能层面,synchronized可以满足,少部分场景Lock可以满足,dubbo的源码也符合这个比例,需要使用到Condition的场景极少,整个dubbo源码中 ...

  7. 实现外网远程桌面内网的电脑和外网访问内网的FTP

     基于之前两篇文章搭建了ngrok实现了内网穿透,用过了http和https的协议完成了外网访问内网的网站,这一篇教大家用tcp协议实现外网远程桌面内网的电脑和外网访问内网的FTP. 一.外网远程桌面 ...

  8. mvc中ViewBag返回数组如何循环显示数据

    直接在for循环里面定义出viewbag @for (int i = 0; i < ViewBag.permission.Count; i++) { var permission = ViewB ...

  9. ElasticSearch查看删除关闭索引

    curl -XDELETE 'http://10.1.2.2:9200/iis_log_2019-07'     #删除名为/iis_log_2019-07的索引 curl -XPOST 'http: ...

  10. Python多任务—进程

    一.进程以及状态 1.进程 正在运行的应用程序就是一个进程.进程是资源分配的基本单元. Python多进程可以在多核CPU上运行,多进程充分利用了多核的资源. 2. 进程的状态 工作中,任务数往往大于 ...