write.table(...,append = T):无法打开连接

时间:2010-09-29 21:30:52

标签: r

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

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

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

“无法打开连接”。

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

在你提问之前:这里提供一个例子的代码太多了。

2 个答案:

答案 0 :(得分:3)

尽管你有异议,但代码会有所帮助。 R有一个固定大小的连接池,我怀疑你的连接不畅。

因此,请确保遵循

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

答案 1 :(得分:2)

我无法在Windows 7 64位的R 2.11.1 32bit上重现它。对于这类内容,请提供有关您系统的更多信息(例如?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”相同。