2012-05-21 110 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)