thesea 新手请教高手们~ 最近处理一个2G大小左右的txt文件系列(有2000多个txt文件,记录的都是气象数据),想要循环读入到一个表格里,再对数据进行统计分析。处理少量txt文件是没有问题,但是一旦到了大量文件时,读入数据很慢,最后系统还报错!内存不足了。网上找了半天攻略,有建议建立数据库处理,或者用ff包,但是还是没弄明白,看起来好难,在此请教高手们,有具体的解决办法么?最好能给出有参考价值的代码!太谢谢了!下面是我原先读入少量txt文件时写的代码: files_tg <- list.files(pattern=".txt$") DailyTG.40J <- data.frame() for(j in files_tg){ tg <-read.table(j, header=TRUE, skip=19, sep=",",dec=","); tg.1<-tg[which(tg$DATE>=19740101&tg$DATE<=20131231),]; DailyTG.40J <- rbind(DailyTG.40J, tg.1) }
thesea [未知用户] 刚把data.frame()函数改成data.table()函数,读入数据确实比原先快了很多,但是还是报错 Error: cannot allocate vector of size 42.6 Mb 估计就是内存不足了。我再想想其他办法。
thesea 哈哈,换了4G内存64位系统的MacBook air用data.table()就可以快速读入这一堆txt文本到一个table里了。data.frame()碰到大数据速度确实是不行了。现在是改变硬件解决了问题,但是以后有时间还是得要琢磨怎么用数据库之类的软件了。
thesea [未知用户] 应该是可以,但是上网找教程看着挺麻烦,就没花时间学,现在才刚入门不久,就从简单的用起吧,以后有时间再好好琢磨琢磨数据库和ff包之类的,估计到时候再碰到更大的处理数据就得用上它们了。