“处理”是指操作多列数据行。R 如何与 Excel、SPSS、SAS 等工具相媲美?R 是查看“大数据”(数亿到数十亿行)的可行工具吗?如果不是,哪些统计编程工具最适合分析大型数据集?
4 回答
如果您查看 CRAN 上的高性能计算任务视图,您会很好地了解 R 在高性能方面可以做什么。
您可以主要存储与 RAM 一样多的数据,但目前向量和矩阵限制为 2^31 - 1 个元素,因为 R 在向量上使用 32 位索引。一般向量(列表及其衍生数据帧)限制为 2^31 - 1 个分量,并且每个分量都具有与向量/矩阵/列表/data.frames 等相同的限制。
当然这些是理论上的限制,如果你想对 R 中的数据做任何事情,它不可避免地需要空间来保存至少几个副本,因为 R 通常会将数据复制到函数等。
努力允许在磁盘上存储(而不是在 RAM 中);但即使是那些在任何时候都将受限于上述在 R 中使用的 2^31-1 限制。请参阅@Roman 帖子中链接的高性能计算任务视图的大内存和内存不足数据部分。
R 已经成为 Kaggle.com 数据建模竞赛中开发人员的首选平台,这或许可以很好地表明它适用于“大数据”。请参阅 Revolution Analytics 网站上的文章——R 以可观的优势击败 SAS 和 SPSS。R 缺乏开箱即用的数字处理能力,它显然弥补了灵活性。
除了网络上提供的内容之外,还有几本关于如何使用 R 来处理大数据的新书。The Art of R Programming (Matloff 2011; No Starch Press) 介绍了如何编写优化的 R 代码、并行计算以及将 R 与 C 结合使用。整本书写得很好,包含大量代码示例和演练。 Parallel R (McCallum & Weston 2011; O'Reilly) 看起来也不错。
我将用 R 和大数据集解释我的短篇故事。
我有一个从 R 到 RDBMS 的连接器,
- 我存储了 8000 万个化合物。
我已经构建了一个查询,它收集了这些数据的一些子集。
然后对这个子集进行操作。
R 只是在我的 PC 上被超过200k行的内存阻塞。
- 核心二人组
- 4 GB 内存
因此,为机器开发一些合适的子集是一个好方法。