2012-05-21 83 views
2

我试图将数据帧的内容写入RData文件。R无法写入csv或RData文件

> save(collector2, file="collect2.RData") 
Error in save(collector2, file = "collect2.RData") : 
    error writing to connection 

作为第二选择我试着使用:

> write.csv(collector2, file="collect2.csv", row.names=FALSE) 

此执行,并创建一个文件,但它是空的。

这是我想写的数据帧:

> head(collector2) 
      adQuer1  rowid adQueravg 
1 2485651|2284211 132000001 0.0000000 
2  20888541|7 132000002 0.0152358 
3  20888541|7 132987430 0.0152358 
4  20888541|7 132595958 0.0152358 
5  20888541|7 132621111 0.0152358 
6  20888541|7 132464740 0.0152358 
> str(collector2) 
'data.frame': 17639105 obs. of 3 variables: 
$ adQuer1 : Factor w/ 7241603 levels "1000467|130715",..: 430440 229948 229948 229948 229948 229948 229948 229948 229948 229948 ... 
$ rowid : num 1.32e+08 1.32e+08 1.33e+08 1.33e+08 1.33e+08 ... 
$ adQueravg: num 0 0.0152 0.0152 0.0152 0.0152 ... 

这里是我的系统信息:

> version 
       _        
platform  x86_64-unknown-linux-gnu  
arch   x86_64      
os    linux-gnu      
system   x86_64, linux-gnu    
status          
major   2        
minor   15.0       
year   2012       
month   03       
day   30       
svn rev  58871       
language  R        
version.string R version 2.15.0 (2012-03-30) 
nickname          

有什么建议?

+0

写这样长的文件需要一些时间。你等了很久吗? –

+0

@DWin:是的,在做任何事之前,我都会等待下一行的'>'出现。 – screechOwl

+0

短文件会发生吗? –

回答

2

原来这是一个硬盘驱动器的问题。我没有空间,这就是信息。

5

那么你试图坚持的对象是不小的。

在任何情况下,我都无法重现该错误,但对象大小是唯一可能的来源,我可以看到。

在数据帧中的中间柱,的rowid,是类型,这是64位整数,使得列是包括了大部分的对象的大小。这表明与其他两个分开持续存在于这一列 - 即在两个单独的RData对象中,每个RData对象都保留到它自己的文件中。

第二,也许尝试压缩通过在适当的参数传递给节省

利用具有约一个数据帧。 300K行和9列,我缩小了RData对象的大小大于1/2使用gzip压缩。

具有9列x大约的数据帧。 300,000行

> dim(FG1) 
[1] 282816  9 

> dfile = "fg1.RData" 


创建一个RDATA文件131 KB的大小:

节省(FG1,文件= dfile)


创建一个RDATA文件66 KB大小:

保存(FG1,文件= dfile,压缩= TRUE,compression_level = 9)