【问题标题】:write.table(...,append=T) : Cannot open the connectionwrite.table(...,append=T) : 无法打开连接
【发布时间】:2011-04-19 01:38:40
【问题描述】:

我想知道是否有其他人遇到过这个问题。我正在将相当少量的数据写入 csv 文件。大约 30 行,50 次。

我正在使用 for 循环将数据写入文件。

有时操作成功完成似乎很“挑剔”,有时它在前十次(300 行)后停止,有时是 3 或 5...告诉我

“无法打开连接”。

我想这是某种类型的超时。有没有办法告诉 R 在写表时“慢下来”?

在您问之前:这里提供的示例代码太多。

【问题讨论】:

  • 我可以通过写入一堆编号文件然后将它们拉回到 R 中,合并并再次使用 write.table 来解决这个问题。但这太令人费解了。

标签: r


【解决方案1】:

我无法在 Windows 7 64 位的 R 2.11.1 32 位上重现它。对于这类事情,请提供有关您系统的更多信息(参见例如?R.version?Sys.info

内存比磁盘访问快得多。 1500 行在内存中几乎可以管理,并且可以一次写入文件。如果是不同的数据集,请添加一个额外的因子变量来指示数据集(set1 到 set50)。您的所有数据都可以在一个数据框中轻松管理,并且您不必多次访问磁盘。

如果真的是 50 个文件,这段代码说明了 Dirk 的宝贵建议:

for(i in 1:50){
    ...
    ff <- file("C:/Mydir/Myfile.txt",open="at")
    write.table(myData,file=ff)
    close(ff)
}

另请参阅帮助:?file 编辑:你应该使用 open="at" 而不是 open="wt"。 “at”是附加模式。 “wt”是写作模式。 append=T 与 open="at" 相同。

【讨论】:

    【解决方案2】:

    尽管您反对,但代码会有所帮助。 R 有一个固定大小的连接池,我怀疑你的连接用完了。

    所以请确保您遵循以下三个步骤

    1. 打开连接(并检查错误作为奖励)
    2. 使用连接写入
    3. 关闭连接

    【讨论】:

    • 参见help(connection)——文件只是连接的一种形式。限制仍然适用。
    猜你喜欢
    • 2011-09-18
    • 2015-09-11
    • 2015-09-03
    • 2010-12-01
    • 2014-05-08
    • 2012-10-12
    • 2013-03-10
    相关资源
    最近更新 更多