R无法写入CSV或RData文件。

5
我正在尝试将数据框的内容写入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                                    

有什么建议吗?

编写这样长的文件需要一些时间。你等待的时间足够长吗? - IRTFM
@DWin:是的,我等待下一行出现“>”才执行任何操作。 - screechOwl
这种情况是否发生在较短的文件中? - IRTFM
1
你可以在 file="....csv" 操作符中指定绝对路径吗?使用 getwd() 命令检查当前工作目录是否正确。如果没有出现任何错误,但是操作仍然无法正常工作,那么这将非常不寻常。此外,你尝试过 write.table 吗? - xbsd
2个回答

9
原来是硬盘出了问题,我的空间已经用完了,这就是提示信息的原因。

5

您要持久化的对象不够小。

无论如何,我无法重现错误,但是对象大小是唯一可能的来源。

您的数据框中间列rowiddouble类型,这些是64位整数,因此该列占据了对象大小的大部分。这表明需要将该列单独持久化,即在两个单独的RData对象中每个对象持久化到其自己的文件中。

其次,可以尝试通过向save传递适当的参数来进行压缩

使用约300,000行和9列的数据框,使用gzip压缩将RData对象的大小减小了约1/2以上

一个有9列x约300,000行的数据框。

> dim(FG1)
[1] 282816      9

> dfile = "fg1.RData"


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

save(FG1, file=dfile)


创建一个大小为66 KB的压缩RData文件:

save(FG1, file=dfile, compress=TRUE, compression_level=9)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接