如何使用R在for循环中实现tryCatch()
我使用如何使用R在for循环中实现tryCatch(),r,R,我使用for()循环编写了R代码,该循环读取excel工作表R列中存储的一些查询,点击服务器并将检索到的响应保存在文本文件中。代码运行正常,直到服务器响应错误,循环执行停止。我尝试在代码中实现tryCatch(),但未能很好地实现 请帮助我在代码中实现tryCatch(),它可以将错误保存在不同的文件中,并可以继续for()循环 代码: for (i in 1:R_column_len){ R_column_data <- (file_data[[6]][i])
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))
}
for(i在1:R\u列中){
R\u列数据也许这说明了总体思路
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的功能附加到文件而不是控制台,并且只记录错误
fl <- tempfile()
flog.appender(appender.file(fl))
flog.threshold(ERROR)
f()
您在何处以及如何实施了tryCatch
?您希望解决哪些错误?请使用更新的代码和错误消息编辑您的问题。谢谢!futile.logger
您提到的示例确实帮助了我进一步处理。现在,我能够处理执行和继续下一个查询时发生的错误。但是没有附加正在记录的错误。文件中只保存了一个错误。请检查下一个注释中的代码。Prod.Exec编辑您的原始问题,而不是对注释进行精心添加。编写您的代码,以便我和其他人可以“复制粘贴”和复制,例如,我们没有用户“squrishi”对应的文件可供读取。(对于错误情况,append=TRUE
不在正确位置,它应用于sprintf()
而不是write()
)。明白了,谢谢!代码现在对我来说运行良好。我已删除sprintf()
函数。
fl <- tempfile()
flog.appender(appender.file(fl))
flog.threshold(ERROR)
f()
> readLines(fl)
[1] "ERROR [2018-10-26 06:28:37] oops, i = 3: my bad"
[2] "ERROR [2018-10-26 06:28:37] oops, i = 6: my bad"
[3] "ERROR [2018-10-26 06:28:37] oops, i = 9: my bad"