这是我的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()
,则会发生相同的行为。为什么?如何附加到文件?
答案 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")