Di beberapa titik, glm.fit
sedang dipanggil. Itu berarti salah satu fungsi Anda menelepon atau salah satu fungsi yang disebut dengan fungsi-fungsi yang baik menggunakan glm
, glm.fit
.
Juga, seperti yang saya sebutkan dalam komentar saya di atas, itu adalah peringatan, bukan kesalahan , yang membuat perbedaan besar. Anda tidak dapat memicu alat debugging R dari peringatan (dengan opsi default sebelum seseorang memberi tahu saya bahwa saya salah ;-).
Jika kita mengubah opsi untuk mengubah peringatan menjadi kesalahan maka kita dapat mulai menggunakan alat debugging R. Dari ?options
kami memiliki:
‘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.
Jadi jika Anda lari
options(warn = 2)
lalu jalankan kode Anda, R akan memunculkan error. Pada titik mana, Anda bisa lari
traceback()
untuk melihat tumpukan panggilan. Berikut ini contohnya.
> 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)
Di sini Anda dapat mengabaikan bingkai yang ditandai 4:
dan lebih tinggi. Kami melihat yang foo
dipanggil bar
dan itu bar
menghasilkan peringatan. Itu akan menunjukkan kepada Anda fungsi mana yang memanggil glm.fit
.
Jika Anda sekarang ingin men-debug ini, kita dapat beralih ke opsi lain untuk memberi tahu R untuk masuk ke debugger ketika menemui kesalahan, dan karena kita telah membuat kesalahan peringatan, kita akan mendapatkan debugger ketika peringatan asli dipicu. Untuk itu Anda harus menjalankan:
options(error = recover)
Berikut ini contohnya:
> 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:
Anda kemudian dapat masuk ke salah satu bingkai tersebut untuk melihat apa yang terjadi saat peringatan dilemparkan.
Untuk mengatur ulang opsi di atas ke defaultnya, masukkan
options(error = NULL, warn = 0)
Adapun peringatan khusus yang Anda kutip, sangat mungkin Anda perlu mengizinkan lebih banyak iterasi dalam kode. Setelah Anda menemukan apa yang memanggil glm.fit
, cari tahu bagaimana menyampaikan control
argumen tersebut menggunakan glm.control
- lihat ?glm.control
.