어느 시점에서 glm.fit
호출되고 있습니다. 즉, 호출하는 함수 중 하나 또는 해당 함수에서 호출하는 함수 중 하나가 glm
, glm.fit
.
내가 위에서 내 댓글에 언급대로 또한, 그건입니다 경고 가 아닌 오류가 큰 차이를 만든다. 경고에서 R의 디버깅 도구를 트리거 할 수 없습니다 (누군가 내가 틀렸다고 말하기 전에 기본 옵션을 사용하여 ;-).
경고를 오류로 전환하는 옵션을 변경하면 R의 디버깅 도구를 사용할 수 있습니다. 에서 ?options
우리가 :
‘warn’: sets the handling of warning messages. If ‘warn’ is
negative all warnings are ignored. If ‘warn’ is zero (the
default) warnings are stored until the top-level function
returns. If fewer than 10 warnings were signalled they will
be printed otherwise a message saying how many (max 50) were
signalled. An object called ‘last.warning’ is created and
can be printed through the function ‘warnings’. If ‘warn’ is
one, warnings are printed as they occur. If ‘warn’ is two or
larger all warnings are turned into errors.
따라서 실행하면
options(warn = 2)
그런 다음 코드를 실행하면 R에서 오류가 발생합니다. 어느 시점에서 실행할 수 있습니다.
traceback()
호출 스택을 확인합니다. 여기에 예가 있습니다.
> options(warn = 2)
> foo <- function(x) bar(x + 2)
> bar <- function(y) warning("don't want to use 'y'!")
> foo(1)
Error in bar(x + 2) : (converted from warning) don't want to use 'y'!
> traceback()
7: doWithOneRestart(return(expr), restart)
6: withOneRestart(expr, restarts[[1L]])
5: withRestarts({
.Internal(.signalCondition(simpleWarning(msg, call), msg,
call))
.Internal(.dfltWarn(msg, call))
}, muffleWarning = function() NULL)
4: .signalSimpleWarning("don't want to use 'y'!", quote(bar(x +
2)))
3: warning("don't want to use 'y'!")
2: bar(x + 2)
1: foo(1)
여기에서 표시된 4:
이상 프레임은 무시할 수 있습니다 . foo
호출 bar
되고 bar
경고 가 생성 된 것을 볼 수 있습니다. 어떤 함수를 호출했는지 보여줄 것입니다 glm.fit
.
이제 이것을 디버깅하려면 다른 옵션으로 전환하여 R에 오류가 발생할 때 디버거에 들어가도록 지시 할 수 있으며, 경고 오류를 만들었으므로 원래 경고가 트리거 될 때 디버거를 받게됩니다. 이를 위해 다음을 실행해야합니다.
options(error = recover)
다음은 그 예입니다.
> options(error = recover)
> foo(1)
Error in bar(x + 2) : (converted from warning) don't want to use 'y'!
Enter a frame number, or 0 to exit
1: foo(1)
2: bar(x + 2)
3: warning("don't want to use 'y'!")
4: .signalSimpleWarning("don't want to use 'y'!", quote(bar(x + 2)))
5: withRestarts({
6: withOneRestart(expr, restarts[[1]])
7: doWithOneRestart(return(expr), restart)
Selection:
그런 다음 해당 프레임 중 하나에 들어가 경고가 발생했을 때 어떤 일이 발생했는지 확인할 수 있습니다.
위 옵션을 기본값으로 재설정하려면 다음을 입력하십시오.
options(error = NULL, warn = 0)
인용 한 특정 경고에 대해서는 코드에서 더 많은 반복을 허용해야 할 가능성이 높습니다. 당신이 호출되는 것을 발견하면 glm.fit
, 그것에게 전달하는 방법을 해결 control
하여 인수를 glm.control
- 참조 ?glm.control
.