R write(append = TRUE)覆盖文件内容

时间:2014-07-24 07:00:51

标签: r file-io append

这是我的R代码:

out = file('testfile')
write('hello', file=out, append=T)
write('world', file=out, append=T)
close(out)

当我运行它时(使用R 3.1.0),testfile然后包含:

world

我期待:

hello
world

如果我使用cat()而不是write(),则会发生相同的行为。为什么?如何附加到文件?

2 个答案:

答案 0 :(得分:12)

您必须打开文件进行写作:

out = file('testfile', 'w')
...

当R自动打开(或不打开)连接时有点复杂,但在帮助(?file)中对其进行了解释。

如果您未通过'w',则每个write调用都会打开并关闭该文件,我猜这会导致您观察到的奇怪行为。

如果要打开现有文件以进行追加,请使用

out = file('testfile', 'a')

答案 1 :(得分:3)

线索来自cat的帮助页面(write是其中的包装):

  

append符合逻辑。仅在参数文件是文件名时使用   (而不是连接或" | cmd")。如果将附加TRUE输出   文件;否则,它将覆盖文件的内容。

使用连接时,您应该设置要打开的连接以进行追加,例如:

file('testfile', open="a")