我正在处理一个大型数据框,并且遇到了 RAM 限制。此时,我可能需要使用磁盘上的序列化版本。有一些包可以支持内存不足操作,但我不确定哪一个适合我的需要。我更愿意将所有内容都保存在数据框中,因此该ff
软件包看起来令人鼓舞,但仍然存在我无法解决的兼容性问题。
当您意识到您的数据已达到内存不足的规模时,首先要使用的工具是什么?
我正在处理一个大型数据框,并且遇到了 RAM 限制。此时,我可能需要使用磁盘上的序列化版本。有一些包可以支持内存不足操作,但我不确定哪一个适合我的需要。我更愿意将所有内容都保存在数据框中,因此该ff
软件包看起来令人鼓舞,但仍然存在我无法解决的兼容性问题。
当您意识到您的数据已达到内存不足的规模时,首先要使用的工具是什么?
我会说disk.frame是这类任务的不错选择。我是该软件包的主要作者。
与限制可以轻松处理的数据类型不同的是,它尝试“模仿”ff
并提供用于操作数据的动词。bigmemory
data.frame
dplyr
如果您正在处理内存问题,您应该尝试以下步骤:
清除消耗 RAM 的附加进程。确保不要打开带有许多选项卡的浏览器,因为它们似乎会消耗大量 RAM。
完成第 1 步后,了解数据集文件的结构。为此,请使用read.csv(nrow=100)。通过这样做,您将了解什么是列和列结构。如果您发现任何列无用,请将其删除。
知道列结构(colclasses)后,您可以一次性导入整个数据框。
这是示例代码:
initial <- read.table("datatable.txt", nrows = 100)
classes <- sapply(initial, class)
tabAll <- read.table("datatable.txt", colClasses = classes)
使用 fread() 读取大型数据帧。
如果仍然不能解决问题,则将数据集分成两部分,将行数分成两个相等的部分,然后在应用降维技术后将它们合并。
我希望它有所帮助。