我正在处理一个非常大的数据集,我正在从 Oracle 数据库下载该数据集。数据框大约有 2100 万行和 15 列。
我的操作系统是 windows xp(32 位),我有 2GB RAM。短期内我无法升级我的内存或操作系统(它正在工作,我需要几个月的时间才能得到一台像样的电脑)。
library(RODBC)
sqlQuery(Channel1,"Select * from table1",stringsAsFactor=FALSE)
我到这里已经陷入了通常的“无法将 xMb 分配给向量”的困境。
我发现了一些关于使用的建议ff
包裹。我很想知道熟悉 ff 包的人是否可以告诉我它对我的情况是否有帮助。
您知道解决内存问题的另一种方法吗?
64 位解决方案有帮助吗?
感谢您的建议。
如果您正在使用 ff 包并将数据保存在 SQL 中,则可以使用 ff 包轻松地将它们获取到 ff 中ETLUtils http://cran.r-project.org/web/packages/ETLUtils/index.html,请参阅文档以获取使用 ROracle 时的示例。
根据我的经验,ff 非常适合您正在使用的数据集类型(21 Mio 行和 15 列) - 事实上,您的设置对 ff 来说有点小,除非您的列包含大量将转换为的字符数据因素(意味着所有因素级别都应该能够适合您的 RAM)。
软件包 ETLUtils、ff 和软件包ffbase http://cran.r-project.org/web/packages/ffbase/index.html允许您使用 ff 获取 R 中的数据并对其进行一些基本统计。根据您将如何处理数据和硬件,您可能必须在构建模型时考虑采样。我更喜欢将数据放在 R 中,使用 ff 中的工具(如分块)或 ffbase 包中的工具基于样本和评分构建模型。
缺点是您必须习惯数据是 ffdf 对象这一事实,这可能需要一些时间 - 特别是如果您是 R 新手。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)