8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

分组函数(tapply、by、aggregate)和 *apply 系列

Gereon will not feed AI 2月前

94 0

每当我想在 R 中执行 \'map\'py 操作时,我通常会尝试使用 apply 系列中的函数。但是,我从未完全理解它们之间的区别 -- 如何 {sapply、lapply 等}...

每当我想在 R 中执行某些\'map\'py 操作时,我通常会尝试使用该 apply 系列中的函数。

然而,我从来没有完全理解它们之间的区别——{ sapply , lapply 等} 如何将函数应用于输入/分组输入,输出会是什么样子,甚至输入可以是什么——所以我经常只是仔细检查它们直到得到我想要的。

有人可以解释一下何时如何使用哪一个吗?

我目前的理解(可能不正确/不完整)是......

  1. p5

  2. p6

  3. apply(matrix, 1/2, f) :输入是一个矩阵。输出是一个向量,其中元素 i 是 f(矩阵的第 i 行/第 i 列)
  4. tapply(vector, grouping, f) :输出是一个矩阵/数组,其中矩阵/数组中的元素是 f 向量分组 g ,并 g 被推送到行/列名称
  5. by(dataframe, grouping, f) :设为 g 分组。应用于 f 组/数据框的每一列。漂亮地打印分组和 f 每列的值。
  6. aggregate(matrix, grouping, f) :类似于 by ,但聚合不会漂亮地打印输出,而是将所有内容粘贴到数据框中。

附带问题:我还没有学过 plyr 或 reshape - 是否会 plyr 完全 reshape 取代这些?

帖子版权声明 1、本帖标题:分组函数(tapply、by、aggregate)和 *apply 系列
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Gereon will not feed AI在本站《list》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 乔兰 (Joran) 的精彩回答 开始 —— 怀疑有什么可以比这更好。

    那么以下助记符可能有助于记住它们之间的区别。虽然有些是显而易见的,但其他的可能不那么明显——对于这些,你可以在 Joran 的讨论中找到依据。

    助记符

    • lapply 是一个 列表 应用,它作用于列表或向量并返回一个列表。
    • sapply 简单 lapply (函数默认在可能的情况下返回向量或矩阵)
    • vapply 经过验证的应用 (允许预先指定返回对象类型)
    • rapply 对嵌套列表(即列表中的列表)的 递归
    • tapply 是一个 标记 应用,其中的标签标识子集
    • apply 通用的 :将函数应用于矩阵的行或列(或者更一般地,应用于数组的维度)

    建立正确的背景

    如果使用 apply 家庭对你来说仍然感觉有点陌生,那么可能是因为你缺少了一个关键的观点。

    这两篇文章可以提供帮助。它们提供了必要的背景知识,以激发 函数系列 提供的 apply 函数式编程技术

    Lisp 的用户会立即认出这个范式。如果你不熟悉 Lisp,一旦你理解了 FP,你就会获得一个在 R 中使用的强大观点——而且 apply 会更有意义。

返回
作者最近主题: