使用我写的R函数时出错:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: algorithm did not converge
Run Code Online (Sandbox Code Playgroud)
我做了什么:
glm.fit.他们是window()和save().我的一般方法包括添加print和stop命令,逐行逐步执行功能,直到找到异常.
但是,我不清楚使用那些在代码中出现此错误的技术.我甚至不确定代码中的哪些函数依赖glm.fit.我该如何诊断这个问题?
可能重复:
调试R的一般建议?
我最近开始使用browser()函数定义进行调试(一个很棒的工具!).我觉得print()调试一直在减缓我内置调试工具的学习曲线.我失踪了的其他一些人是什么?
我观察到了一个traceback()我不理解的交互式和非交互式R会话之间的不同.对于下面的代码,它会产生错误,但在交互式R会话中,我可以看到回溯信息,而如果我将代码保存到test.R并通过Rscript test.R或调用它R -f test.R,我将无法再看到回溯:
f = function() {
on.exit(traceback())
1 + 'a'
}
f()
Run Code Online (Sandbox Code Playgroud)
在交互式R会话中:
> f = function() {
+ on.exit(traceback())
+ 1 + 'a'
+ }
> f()
Error in 1 + "a" : non-numeric argument to binary operator
1: f()
Run Code Online (Sandbox Code Playgroud)
非交互式执行:
$ Rscript test.R
Error in 1 + "a" : non-numeric argument to binary operator
Calls: f
No traceback available
Execution halted
Run Code Online (Sandbox Code Playgroud)
我没有看到解释?traceback,我想知道是否有一种方法可以为非交互式R会话启用回溯.谢谢!
假设我刚刚调用了一个函数f,并且在函数的某处发生了错误.我只是希望能够在错误发生之前检查出不同变量的值.
假设我的直觉告诉我这是一个小错误,所以我懒得使用debug(f)而且懒得插入browser()功能的部分我认为出错了.而且我懒得开始print()发表声明.
这是一个例子:
x <- 1:5
y <- x + rnorm(length(x),0,1)
f <- function(x,y) {
y <- c(y,1)
lm(y~x)
}
Run Code Online (Sandbox Code Playgroud)
调用f(x,y)我们得到以下错误:
Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE) :
variable lengths differ (found for 'x')
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想要在lm()调用之前获取环境的状态; 这样我可以打电话x,y看看他们的长度是不同的.(这个例子可能太简单了,但我希望它可以解决这个问题.)
是否可以在R studio中运行代码后看到语法错误或运行时错误行号(也可以突出显示)?
我搜索了选项但找不到.
我想使用一个将错误导出到.txt文件的函数.到目前为止,我有:
error.function <- function() {
cat(geterrmessage(), file="c:/bla.txt", append=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
然后,
options("error"=error.function)
Run Code Online (Sandbox Code Playgroud)
但是,这只能给我error没有相应的行号我可以请求帮助以扩展error.function以及有关行号的信息(我在Rstudio中的脚本以line1开头并上升到第2500行?
我正在调试一个模型。输入数据是使用 python 脚本准备的,该脚本调用 R 脚本,通过 python 调用subprocess.check_call()(现在替换为pbs.Command())。这个 R 脚本有各种错误。当R脚本中发生错误时,我们可以在标准错误中看到错误消息,出现在python错误的上方(或下方)。问题是R返回的错误信息只返回发生错误的一小部分代码,没有任何行号。然后我们必须在原始源中搜索该代码段。如果我们有实际的行号,那就更容易了。
一个相关的答案建议使用 IDE再次逐行运行整个 R 代码,但我们想知道发生此错误的行号,以便我们至少可以运行该行之前的所有 R 代码。