R语言合并数据

0
各位,R合并数据稍微多一点就报错:
Error: cannot allocate vector of size 140.5 Mb
但是有时候仅仅达到60.5M也报,这怎么解决?大数据量如何办?
已邀请:
0

Robin_Li - R&Python机器学习讲师 2016-08-24 回答

R语言中是将所有变量都存入内存进行处理的,因此当R中使用的物理内存过大时会造成内存溢出的问题。
问题中的140.5MB和60.5MB并不大,但是需要注意的是在先前处理过程中是不是存在了很多其他的数据占用了内容了呢?
可以使用ls()函数看是不是有过多的冗余变量。

处理方法我给两种简易比较好上手的方法:
方法1:
rm(list=c())#将中间很多不必要的变量通通remove掉
gc()#这个函数是与rm()联用的,因为remove了之后,这个变量占用的内存还没有被释放,也就是说还会产生内存溢出的问题,gc是将这些内存释放出去的。

方法2:
这种方法适用于更大的数据,例如1G、2G的数据
解决方案是将给内存的压力转换给计算机I/O的压力,即随时生成数据随时write到csv文件中,然后使用rm,gc将内存随时处理。
这种方法的缺点是计算的速度回很慢,因为此方法需要不停的读写硬盘,这个速度和读写内存差太多了,固态硬盘也有压力,所以使用要慎重,万不得已还是不要用的。

要回复问题请先登录注册