2013-04-22 45 views
1

这里更好意味着更快或更易于阅读/更短的语法,也可能意味着该命令在data.table中甚至不可行。当plyr比data.table更好吗?

我不使用plyr很多,并想知道是否有案件,当我应该。因为我没有使用它很多,我能想出的唯一例子是rbind.fill,据我所知没有data.table模拟和我见过的所有其他示例在plyrdata.table中均已完成,后者更快,更容易阅读/更紧凑。

+4

这太宽了。 – 2013-04-22 18:30:25

+3

** plyr **不会(通常)比** data.table **更快。有些人(比如我自己)发现前者的语法比后者更直观和可读。但那只是一个主观选择。 – joran 2013-04-22 18:30:55

+0

@Arun thx,我会看看这些功能。 'plyr'对'data.frame'做的更好吗? – eddi 2013-04-22 18:40:14

回答

12

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

下面是每个包的简要总结,从包装自己:

的plyr包是一组的,在R.实施拆分申请,结合图案清晰一致的工具,这是一个数据分析中非常常见的模式:通过将问题分解成小块来解决复杂问题,对每个块做一些事情,然后再将这些结果重新组合起来。

data.table ...提供了快速的子集,快速分组,快速更新,快速有序的连接和列表列在很短的和灵活的语法,为更快的发展。它受到R中A [B]语法的启发,其中A是矩阵,B是2列矩阵。

它们重叠是在“快分组”这plyr也确实通过拆分data.frames,上个工作,并把它们重新组合成一个单一的data.frame。 data.table还有许多其他功能可以使数据框架像结构一样快速运行; plyr具有将分裂应用组合范例应用于其他数据结构(例如列表和数组(作为输入和输出))的特征。

实际上,它们是两个不同的工具,它们碰巧有一个重叠的小区域,它们解决了相同的问题域,但每个工具的作用远不止于此,如果您想要/需要该附加功能,那么该包应该使用。

+0

听起来像你在说'plyr'做一些'data.table'不能做的事情 - 这正是我要找的 - 你能举个例子还是两个?谢谢 – eddi 2013-04-22 18:37:42

+0

'library(“plyr”);例子(“llply”)'或者真的,除了'ddply'之外的'** ply'函数。 – 2013-04-22 18:42:39

+0

'llply'似乎不是一个很好的用于这个目的(据我所知,它在'lapply'已经做了什么之上做的很少),但其他人做的,我会看看这些功能并可能在此之后重新提出这个问题,现在可以这样做,谢谢 – eddi 2013-04-22 19:09:33