R在写入文本文件和控制台(stdout)之间切换

R在写入文本文件和控制台(stdout)之间切换,r,file-io,R,File Io,我有一个R程序,它使用writeLines、cat和print生成大量文本,我希望能够在文本文件和控制台之间来回切换输出。下面是一个简单的例子: WRITE_TO_TEXT_FILE <- TRUE TEXT_FN <- "C:/temp/test.text" if (WRITE_TO_TEXT_FILE) { fileConnection <- file(TEXT_FN ) writeLines("My text string"

我有一个R程序,它使用writeLines、cat和print生成大量文本,我希望能够在文本文件和控制台之间来回切换输出。下面是一个简单的例子:

WRITE_TO_TEXT_FILE <- TRUE
TEXT_FN <- "C:/temp/test.text"

if (WRITE_TO_TEXT_FILE) {
  fileConnection <- file(TEXT_FN )
  writeLines("My text string", fileConnection)
  close(fileConnection)

} else {
  writeLines("My text string")

}

WRITE_TO_TEXT_FILE您还可以使用
stdout()
作为默认输出的连接。你可以这样做

if (WRITE_TO_TEXT_FILE  ) {
  fileConnection <- file(TEXT_FN )

} else {
  fileConnection <- file(stdout)

}

writeLines("My text string", fileConnection)
close(fileConnection)
WRITE_TO_TEXT_FILE <- TRUE
TEXT_FN <- "C:/temp/test.text"

# at the start
fcon <- stdout()
if (WRITE_TO_TEXT_FILE) {
  fcon  <- file(TEXT_FN)
}


# use fcon anytime you need to write output
writeLines("My text string", fcon)


# at the very end
if (WRITE_TO_TEXT_FILE) {
  # you usually don't close stdout
  close(fcon)
}

WRITE_TO_TEXT_文件很漂亮-谢谢。我发现我犯的一个错误是在stdout之后没有包含括号,也就是说,我尝试了stdout的变体,“stdout”等,但没有键入stdout()。是的,在R中,它是一个返回连接的函数,而不像其他语言中的对象。一个微妙的转折:因为我必须从程序中的多个位置写入文件,我必须以附加模式打开它,即
fcon