在R中,reshape和reshape2有什么区别?

50

我试图理解为什么开发从reshape转移到了reshape2包。它们似乎在功能上相同,然而,由于服务器上运行的R版本较老,我目前无法升级到reshape2。我担心可能会有一个严重的错误导致开发人员不得不转向全新的包,而不是简单地继续开发reshape。是否有人知道reshape包存在重大缺陷?


1
你找到官方文档了吗?http://cran.r-project.org/web/packages/reshape2/reshape2.pdf 这个解释如何使用reshape2怎么样?http://wiki.stdout.org/rcookbook/Manipulating%20data/Converting%20data%20between%20wide%20and%20long%20format/ - Wilduck
2
重塑(Reshape)是一个旧版本的软件包。根据我的观察,Hadley Wickham非常关心破坏依赖于他软件包的人的代码。我猜测重塑需要进行一些重大改进,而不是破坏每个人的代码,所以他从头开始重新设计了它(我猜测)。虽然函数和用法有一些差异,但它们执行非常相似的工作。我建议您继续使用reshape2,因为我认为重塑已经不再开发了。 - Tyler Rinker
1
@Maiasaura,我无法升级到reshape2,因为我的系统管理员运行的是旧版本的R。因此,我需要知道是否有一些主要的错误导致Hadley构建了reshape2。 - Alex
3
所以你真正想问的问题是:“Hadley Wickham 是否因为 reshape 存在一个严重的错误而将精力转移到了 reshape2 上?” - Josh O'Brien
我认为那将是很好的。知道答案的人可以清楚地回答这个问题(可能会参考Hadley关于此事的一些笔记)。干杯。 - Josh O'Brien
显示剩余3条评论
1个回答

69

reshape2 是一个重新启动的 reshape 包,它比原始包要快得多,同时避免了破坏用户的依赖和习惯。

https://stat.ethz.ch/pipermail/r-packages/2010/001169.html

reshape2 是重启 reshape 包的一个版本。自包的第一个版本发布以来已经过去了五年时间,在这段时间里,我学到了大量有关 R 编程和如何在 R 中处理数据的知识。reshape2 利用这些知识创建了一个新的数据重塑包,它更加专注且速度更快。

这个版本在提高速度的同时减少了一些功能,因此我将其重命名为 reshape2,以避免给现有用户带来麻烦。根据用户反馈,我可能会重新引入其中一些功能。

reshape2 的新特性:

  • 采用更好的底层算法,利用子集的强大速度,大大提高了速度和内存效率,在大多数情况下只需对数据进行单次复制。

  • 根据输出类型,cast 被两个函数替换: dcast 生成数据框,acast 生成矩阵/数组。

  • 现在支持多维边距:已经删除了 grand_rowgrand_col,现在边距的名称指的是其值设置为 (all) 的变量。

  • 删除了一些功能,例如 | cast 运算符和从聚合函数返回多个值的能力。我相信这些操作都可以由 plyr 更好地执行。

  • 引入了新的转换语法,可以根据变量函数来进行数据重塑(基于与plyr相同的底层语法):

  • 采用更好的开发实践,例如命名空间和测试。


谢谢Matt!感谢您将这个从邮件列表发布到更公开熟悉的论坛上。 - isomorphismes
1
能够从聚合函数返回多个值的能力。参考相关问题:https://dev59.com/JXvaa4cB1Zd3GeqPJ_en - landroni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接