Bir noktada glm.fit
çağrılıyor. Bu, çağırdığınız işlevlerden birinin veya bu işlevler tarafından çağrılan işlevlerden birinin glm
, ikisinden birini kullandığı anlamına gelir glm.fit
.
Ayrıca yukarıdaki yorumumda da bahsettiğim gibi bu büyük bir fark yaratan hata değil uyarıdır . R'nin hata ayıklama araçlarından herhangi birini bir uyarıdan tetikleyemezsiniz (biri bana hatalı olduğumu söylemeden önce varsayılan seçeneklerle ;-).
Uyarıları hatalara dönüştürmek için seçenekleri değiştirirsek, R'nin hata ayıklama araçlarını kullanmaya başlayabiliriz. Gönderen ?options
biz var:
‘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.
Yani koşarsan
options(warn = 2)
sonra kodunuzu çalıştırın, R bir hata atacaktır. Hangi noktada koşabilirsin
traceback()
çağrı yığınını görmek için. İşte bir örnek.
> 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)
Burada işaretlenmiş 4:
ve daha yüksek çerçeveleri göz ardı edebilirsiniz . Bunun foo
çağrıldığını bar
ve bar
uyarıyı oluşturduğunu görüyoruz . Bu size hangi fonksiyonların çağırdığını göstermelidir glm.fit
.
Şimdi bunu hata ayıklamak istiyorsanız, başka bir seçeneğe dönerek R'ye bir hatayla karşılaştığında hata ayıklayıcıyı girmesini söyleyebiliriz ve uyarı hataları yaptığımızda, orijinal uyarı tetiklendiğinde bir hata ayıklayıcı alacağız. Bunun için koşmalısınız:
options(error = recover)
İşte bir örnek:
> 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:
Daha sonra, uyarı atıldığında ne olduğunu görmek için bu çerçevelerden herhangi birine adım atabilirsiniz.
Yukarıdaki seçenekleri varsayılan değerlerine sıfırlamak için şunu girin:
options(error = NULL, warn = 0)
Alıntı yaptığınız özel uyarıya gelince, büyük olasılıkla kodda daha fazla yinelemeye izin vermeniz gerekir. Neyin çağrıldığını anladıktan sonra glm.fit
, control
argümanı kullanarak onu nasıl geçireceğinizi bulun glm.control
- bkz ?glm.control
.