【发布时间】:2019-08-06 14:50:48
【问题描述】:
我一直在尝试使用过去与我合作的几种不同方法将许多文件上传到 R 中,但由于某种原因不在这里。我在论坛上阅读了许多帖子,这些帖子解决了可以做到这一点的不同方法,但似乎没有一个对我的问题有用;我想文件更大。
以下是我尝试过的不同方法:
files <- list.files(pattern = ".txt")
listOfFiles <- list()
for(i in 1:length(files)){
listOfFiles[[i]] <- read.table(files[i], header = TRUE, sep = "\t", stringsAsFactors = FALSE)
}
但是,当我运行此程序时,我的计算机只是冻结并停止工作。这让我相信这可能是一个内存问题,但是我尝试将memory.limit() 更改为大约 12000,但它仍然无法运行。
这里有一个帖子有点解决了手头的问题:Quickly reading very large tables as dataframes。不同的原因是我知道我上传的脚本可以正常工作,只是不能用于总计超过 2GB 的许多文件。我相信这是一个内存问题,因为当我再次运行它时,我得到了错误:
Error: cannot allocate vector of size 7.8 Mb
我已经阅读了论坛上使用lapply 的其他帖子,所以我想尝试一下,但是它也失败了。
这是我所做的:
listo <- lapply(files, read.table)
另一方面,这运行,但是当我尝试打开列表 listo 时,它给了我错误:
Error: object 'listo' not found
任何帮助将不胜感激。
【问题讨论】:
-
也许从包 Data.table 中的 fread 可以在这里提供帮助?它应该比 read.table 更快。
-
在再次更改内存限制后我正在尝试 fread,如果它有效,我会告诉你!不过,谢谢大家的时间。
-
@TinglTanglBob 它已与 fread 合作!非常感谢。
-
如果您想通了,最好将其发布为答案(您可以回答自己的问题,甚至接受自己的答案),而不是作为问题的编辑