我一直尝试使用过去使用过的几种不同方法将许多文件上传到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
任何帮助将不胜感激。
答案 0 :(得分:0)
感谢@TinglTanglBob在解决此问题方面的帮助。
这是我的解决方法:
memory.limit(size = 12000)
files <- list.files(pattern = ".txt")
YFV_list <- list()
for(i in 1:length(files)){
YFV_list[[i]] <- fread(files[i], sep = "\t", header = TRUE, stringsAsFactors = FALSE)
}
所以我假设是一个内存问题。使用fread
包中的Data.table
可以解决此问题,因为它在read.table
之前无法正常工作。但是,无论如何memory.limit
都需要进行一些调整。