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,对于多维数组的普通 array
比 aaply
快得多。
【参考方案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 好?