Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用R在for循环中实现tryCatch()_R - Fatal编程技术网

如何使用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"