相关疑难解决方法(0)

R中调试的一般建议

使用我写的R函数时出错:

Warning messages:
1: glm.fit: algorithm did not converge 
2: glm.fit: algorithm did not converge 
Run Code Online (Sandbox Code Playgroud)

我做了什么:

  1. 逐步完成该功能
  2. 添加打印以找出错误发生在哪一行表示不应使用的两个函数glm.fit.他们是window()save().

我的一般方法包括添加printstop命令,逐行逐步执行功能,直到找到异常.

但是,我不清楚使用那些在代码中出现此错误的技术.我甚至不确定代码中的哪些函数依赖glm.fit.我该如何诊断这个问题?

debugging r r-faq

119
推荐指数
11
解决办法
4万
查看次数

R:在记录堆栈跟踪后捕获错误并继续执行(tryCatch没有可用的回溯)

我在服务器上运行的R中有许多无人看管的批处理作业,运行后我必须分析作业失败。

我试图捕获错误以将其记录下来并从错误中恢复,但是我无法获得堆栈跟踪(traceback)来记录导致错误的R命令的代码文件名和行号。(愚蠢的)可复制示例:

f <- function() {
  1 + variable.not.found    # stupid error
}

tryCatch( f(), error=function(e) {
  # Here I would log the error message and stack trace (traceback)
  print(e)            # error message is no problem
  traceback()         # stack trace does NOT work
  # Here I would handle the error and recover...
})
Run Code Online (Sandbox Code Playgroud)

运行上面的代码将产生以下输出:

f()中的simpleError:找不到对象“ variable.not.found”

没有可用的回溯

回溯不可用,其原因已记录在R帮助(?traceback)中:

通过try或tryCatch捕获的错误不会生成回溯,因此输出的是最后一个未捕获的错误(不一定是最后一个错误)的调用顺序。

换句话说:捕获错误tryCatch确实会杀死堆栈跟踪!

我怎么能够

  • 处理错误
  • 记录堆栈跟踪(回溯)以进行进一步检查
  • [可选]是否使用了未保证将来无法使用的未记录或隐藏的R内部函数?

多谢!

error-handling logging r

4
推荐指数
2
解决办法
1341
查看次数

标签 统计

r ×2

debugging ×1

error-handling ×1

logging ×1

r-faq ×1