ある時点で、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
-seeを使用して引数を渡す方法を考え出しglm.control
ます?glm.control
。