我想写一个文件,然后在循环中(在Windows机器上)多次追加它。每次我追加它之后,我想关闭连接,因为我希望文件下沉到一个Dropbox帐户,这样我就可以在其他计算机上打开它,同时代码正在运行,以检查日志文件'状态(注意这个条件使得这个问题与SO上有关sink,writeLines,write,cat等的问题有所不同)。我试过了
#set up writing
logFile = file("log_file.txt")
write("This is a log file for ... ", file=logFile, append=FALSE)
for(i in 1:10){
write(i, file=logFile, append=TRUE)
}
我也试过sink(file=logFile,append=TRUE); print(i); sink()
;在循环中也是cat
。两种选择都不起作用。该文件仅显示i = 10,即循环的最后一次迭代。我在文档中注意到以下句子。
"如果为TRUE,则将数据x附加到连接。"
以上是否意味着它不会附加到现有文件。
答案 0 :(得分:8)
以下似乎适用于cat,因为它不需要文件连接:
#set up writing
logFile = "log_file.txt"
cat("This is a log file for ... ", file=logFile, append=FALSE, sep = "\n")
for(i in 1:10){
cat(i, file=logFile, append=TRUE, sep = "\n")
}
输出看起来像是附加每个值:
This is a log file for ...
1
2
3
4
5
6
7
8
9
10
我认为你想要的是什么。如果您使用的是Mac或使用Linux,则可以使用以下方法跟踪文件中的进度:
tail -f log_file.txt
我不知道这对dropbox有何用处。你可以登录运行代码的计算机(例如,在mac或linux上)吗?
答案 1 :(得分:0)
在每次迭代后显式关闭文件怎么样?
#set up writing
file.text <- "log_file.txt"
logFile = file(file.txt)
write("This is a log file for ... ", file=logFile, append=FALSE)
close(logFile)
for(i in 1:10){
logFile <- file(file.text)
write(i, file=logFile, append=TRUE)
close(logFile)
}