需要很长时间从csv文件中读取数据。

24 浏览
0 Comments

需要很长时间从csv文件中读取数据。

这个问题已经在这里有了答案

如何快速地将大型表格作为数据框读取

我需要读取一个非常大的CSV文件(具有超过30000行和10000列)。我需要逐列读取数据。这是我的代码:

con<-file("D:\\Data.csv","r")
datalist<-list()
for(spalte in 5:5)
{
  for(i in 1:20000)
  {
    line<-readLines(con,n=1,warn=FALSE)
    m<-list(as.integer(unlist(strsplit(line,split=","))))
    datalist<-c(datalist,sapply(m,"[[",spalte))
  }
}

但是这段代码需要4分钟才能读取一个列(在这个例子中是第五列)。我该如何才能让这项工作更快?

admin 更改状态以发布 2023年5月20日
0
0 Comments

尝试使用data.table包中的fread(filename)。它非常快速地读取大文件。

system.time(fread('abc.csv'))
user  system elapsed 
0.41    0.00    0.40 
system.time(read.csv('abc.csv'))
user  system elapsed 
2.28    0.02    2.29 

如果你有内存问题,那么像Richie建议的那样使用64位,并尝试在服务器上运行,或者甚至可以获得具有大容量RAM的Amazon EC2机器。

0
0 Comments

不要为已经解决的问题重新发明解决方案。如果read.csv报告了内存错误,那就做以下几个步骤:

1)确保你在使用64位的R(没有4GB内存限制)。

2)忽略不需要保存的行以节省空间。使用colbycol可以达到这个目的。

3)将文件读入数据库中,然后从中导入所需的内容。有许多解决方案,可以从回答这个SO问题开始寻找。

4)购买更多的内存,或在具有更大内存的远程工作站上运行分析(也许可以使用云服务器)或使用out-of-memory包。查看高性能计算任务视图

0