我正在使用大型数据框,并且已经遇到了RAM限制。此时,我可能需要在磁盘上使用序列化版本。有a few packages来支持内存不足的操作,但我不确定哪一个能满足我的需求。我宁愿将所有内容保存在数据框中,因此ff
包看起来很令人鼓舞,但仍存在兼容性问题,我无法解决这些问题。
当您意识到数据已达到内存不足时,第一个可以实现的工具是什么?
答案 0 :(得分:25)
你可能想看一下这些包:
lm()
和glm()
样式模型的内存模型拟合。并且还可以看到High-Performance Computing任务视图。
答案 1 :(得分:0)
如果您正在处理内存问题,请尝试以下步骤:
清除消耗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()读取大型数据帧。
如果仍然没有解决问题,那么将数据集分成两部分,将行数分成两个相等的部分,然后在应用降维技术后合并它们。
我希望它有所帮助。
答案 2 :(得分:0)
我会说disk.frame是这类任务的理想人选。我是该软件包的主要作者。
与限制容易处理的数据类型的ff
和bigmemory
不同,它尝试“模仿” data.frame
并提供dplyr
动词来处理数据。