plyr 啥时候比 data.table 好? [关闭]

Posted

技术标签:

【中文标题】plyr 啥时候比 data.table 好? [关闭]【英文标题】:when is plyr better than data.table? [closed]plyr 什么时候比 data.table 好? [关闭] 【发布时间】:2013-04-15 18:12:18 【问题描述】:

这里的更好可能意味着更快或更容易阅读/更短的语法,或者也可能意味着该命令甚至在 data.table 中都不可用。

我不经常使用plyr,我想知道是否有我应该使用的情况。因为我不经常使用它,所以我能想出的唯一例子是rbind.fill,据我所知没有data.table 模拟和我见过的所有其他例子都在@ 987654325@ 和 data.table,后者更快更容易阅读/更紧凑。

【问题讨论】:

方式太宽泛了。 plyr(通常)不会比 data.table 快。有些人(比如我自己)发现前者的语法比后者更直观、更易读。但这只是一个主观的选择。 @Arun thx,我会看看这些功能。 plyr 是否为 data.frame 做得更好? @Arun,非常感谢。平行的东西听起来很有趣,我来看看。 只是我的 2ct,对于多维数组的普通 arrayaaply 快得多。 【参考方案1】:

它们是具有不同用途的不同软件包。一个不能替代另一个,尽管它们有一小部分功能重叠。

以下是每个包的简要摘要,来自包本身:

plyr 包是一组干净且一致的工具,用于在 R 中实现拆分-应用-组合模式。这是数据分析中极为常见的模式:您可以通过将复杂问题分解成小块来解决它,执行每个部分都有一些东西,然后将结果再次组合在一起。

data.table ... 以简短灵活的语法提供快速子集、快速分组、快速更新、快速排序连接和列表列,以加快开发速度。它受到 R 中 A[B] 语法的启发,其中 A 是矩阵,B 是 2 列矩阵。

它们重叠的地方是“快速分组”,plyr 也通过拆分 data.frame、对片段进行操作并将它们重新组合成单​​个 data.frame 来实现。 data.table 具有许多其他功能,可以快速对类似 data.frame 的结构进行操作; plyr 具有将拆分-应用-组合范式应用​​于其他数据结构的功能,例如列表和数组(作为输入和输出)。

所以,实际上,它们是两个不同的工具,恰好有一小部分重叠,可以解决相同的问题域,但每个工具的功能远不止于此,如果您想要/需要额外的功能,那么该软件包应该是用过。

【讨论】:

听起来你在说plyr 做了一些data.table 不能做的事情——这正是我要找的——你能举一两个例子吗?谢谢 library("plyr"); example("llply") 或者实际上是**ply 以外的任何ddply 函数。 llply 似乎不是一个很好的用途(据我所知,它在 lapply 已经做的基础上做的很少),但其他的做,我会看看这些功能,然后可能会重新提出这个问题,现在就可以了,谢谢

以上是关于plyr 啥时候比 data.table 好? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 data.table::B[A] 和 plyr::join(A,B) 返回不同的结果?

是否可以将 Spark 中的 data.table 与 Spark Dataframes 一起使用?

一个接一个地加载 Data.Table 和 dplyr 会出错

Dlib 的 svm_c_linear_trainer 啥时候比 svm_c_linear_dcd_trainer 好?

因子在 data.table 中的存储效率是不是比字符更有效?

对于这些查找表样式查询,为什么data.table比base R慢?