いくつかのファイルを書き込み、書き込みが完了したときに各ファイルの最後にメッセージを出力することを目的とした次の手順を実装しました。
# Print one file per piaf
output_dir_piafs <- "OUTPUT_dataset_piafs"
unlink(output_dir_piafs, recursive = TRUE, force = TRUE)
dir.create(output_dir_piafs)
for (i in 1:length(lst_sorted)) {
sink() # Generates warnings...
filename <- paste(output_dir_piafs, "/piaf_", i, ".txt", sep="")
sink(file = filename, append = TRUE)
sink(type = "message")
cat(" ", colnames(file1), "\n")
for (j in 1:length(lst_sorted[[i]])) {
cat(j, " ")
lapply( lst_sorted[[i]][[j]],
function(x) {
cat(as.character(x), " ")
}
)
cat("\n")
}
## back to the console
sink()
cat(paste(filename, "done !\n"))
#flush(stdout()) # Tested, no particular effect
}
sink()
私の問題は、ループの最初にa を追加しないと、標準出力 ( cat(paste(filename, "done !\n"))
) への最後の書き込みが効果がないことです。一方、これを早期に追加するsink()
と、回避したい警告が生成されます。
There were 50 or more warnings (use warnings() to see the first 50)
> warnings()
Warning messages:
1: In sink() : no sink to remove
2: In sink() : no sink to remove
3: In sink() : no sink to remove
sink() がどのように動作するか、および/またはこれらの警告を取り除く方法について誰かが考えていますか?
注:私も試しtry(sink(), silent=TRUE)
ましたが、silent
オプションはエラーのみを防ぎます...