我想在函数中使用接收器。
让我们创建一个文件以获得可重现的示例:
write.table("stop('error message')", "sampleError.R")
首先是一个工作示例 - 在函数外部:
con <- file("test.log")
sink(con, append = TRUE)
sink(con, append = TRUE, type="message")
source("sampleError.R", echo = TRUE, max.deparse.length = 10000)
sink()
sink(type = "message")
logFile <- readLines("test.log")
现在失败尝试在函数中调用它。失败的是记录未完成,并且必须在函数外部调用sink()
命令以完成日志创建。
f <- function(){
con <- file("test.log")
sink(con, append = TRUE)
sink(con, append = TRUE, type="message")
source(filePath, echo = TRUE, max.deparse.length = 10000)
sink()
sink(type = "message")
logFile <- readLines("test.log")
}
f()
是的,不幸的是,我必须坚持从函数中调用它;)