我已经使用for()
循环编写了R代码,该循环读取了存储在excel工作表的R列中的一些查询,命中服务器并将检索到的响应保存在文本文件中。该代码运行良好,直到服务器响应错误并停止循环执行为止。我尝试在代码中实现tryCatch()
,但实现得不好。
请帮助我在代码中实现tryCatch()
,这样可以将错误保存在其他文件中,并可以继续进行for()
循环。
代码:
for (i in 1:R_column_len){
R_column_data <- (file_data[[6]][i])
a <- eval(parse(text = R_column_data))
write.table(a,file = sprintf("C:/Results/F_Query_Prod_%s.txt", i))
}
答案 0 :(得分:2)
也许这说明了一般想法
.Tags[]
| select(.Key == "Application")
| "\(.Key) : \(.Value)"
产生输出
library(futile.logger)
f <- function() {
for (i in 1:10) {
tryCatch({
if (i %% 3 == 0)
stop("my bad")
## normal behavior
flog.info("i = %d", i)
}, error = function(e) {
## error behavior
flog.error("oops, i = %d: %s", i, conditionMessage(e))
})
}
}
使用futile.logger的功能附加到文件而不是控制台,并仅记录错误
> f()
INFO [2018-10-25 15:50:05] i = 1
INFO [2018-10-25 15:50:05] i = 2
ERROR [2018-10-25 15:50:05] oops, i = 3: my bad
INFO [2018-10-25 15:50:05] i = 4
INFO [2018-10-25 15:50:05] i = 5
ERROR [2018-10-25 15:50:05] oops, i = 6: my bad
INFO [2018-10-25 15:50:05] i = 7
INFO [2018-10-25 15:50:05] i = 8
ERROR [2018-10-25 15:50:05] oops, i = 9: my bad
INFO [2018-10-25 15:50:05] i = 10
结果是
fl <- tempfile()
flog.appender(appender.file(fl))
flog.threshold(ERROR)
f()