【问题标题】:R can't write to csv or RData fileR 无法写入 csv 或 RData 文件
【发布时间】:2012-05-28 06:52:42
【问题描述】:

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

有什么建议吗?

【问题讨论】:

  • 写这么长的文件需要一些时间。你等的够久了吗?
  • @DWin:是的,我会等待下一行的“>”出现,然后再做任何事情。
  • 较短的文件会发生这种情况吗?
  • 你能在 file="....csv" 操作符中指定一个绝对路径/用 getwd() 检查你当前的工作目录吗?如果您没有收到任何错误+它不起作用,那将是非常不寻常的。另外,你试过 write.table 吗?

标签: r csv save


【解决方案1】:

原来是硬盘问题。我没有空间了,这就是信息。

【讨论】:

    【解决方案2】:

    嗯,你试图坚持的对象并不小。

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

    数据框中的中间列 rowiddouble 类型,它们是 64 位整数,因此该列包含对象大小的大部分。这表明 将此列与其他两个分开保存 - 即,在两个单独的 RData 对象中,每个对象都保存到自己的文件中。

    其次,也许通过将适当的参数传递给 save 来尝试 compression

    使用具有大约的数据框。 300K 行和 9 列,我使用 gzip 压缩将 RData 对象的大小减小了一点超过 1/2

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

    > dim(FG1)
    [1] 282816      9
    
    > dfile = "fg1.RData"
    


    创建一个 131 KB 的 RData 文件:

    保存(FG1,文件=dfile)


    创建一个 66 KB 的 RData 文件:

    保存(FG1,file=dfile,compress=TRUE,compression_level=9)

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多