2011-04-21 10 views
5

Seçenekleri ayarladım (warn = 2). Tetiklendiğinde uyarının farkında olmak ve yürütmeyi durdurmayı tercih ederim. Bununla birlikte, birkaç durumda bir uyarı bekleniyor ve program yürütmeye devam etmelidir. TryCatch() işlevinin kullanılması hatayı düzgün bir şekilde yakalar, ancak elde edilen veriler mevcut değildir.R - bazı senaryolarda uyarıda hatayı yok say, sonuçları al

İşte somut bir örnek: tryCatch içinde

x = c(1,2,3,4,5,6) 
y = c(1,1,1,0,0,0) 
result = glm(y~x , family = binomial(link = "logit")) 

Paketleme glm(), sonuç doldurulur değil. Bu, glm'nin uyarısı geri dönme şansı olmadan bir hataya dönüştürüldüğünden anlamlıdır. Bu senaryoda en iyi uygulama var mı? Glm çağrısından önce seçenekleri (warn = 0) ayarlamak ve sonra aramadan sonra geri yüklemek mi? Yoksa daha iyi bir desen var mı?

Eminim yapmak istediklerim budur. Uyarılar için standart yoktur. Bazen bir uyarı önemsiz, diğer zamanlarda ise oldukça ciddi. Bu yüzden uyarıları varsayılan olarak hatalara dönüştürüyorum. Yine de, uyarıyı görmezden gelebileceğime kesin olarak emin olduğum bazı durumlarda uyarıları ihmal etme yeteneğine ihtiyacım var. Bu durumlarda sonucu istiyorum! ===========

tryCatch( { result = glm(y~x , family = binomial(link = "logit")) } , error = function(e) { print("test") }) 
+0

Denediğiniz "tryCatch" bloğunu verebilir misiniz? –

+0

@Joshua - orijinal yayının düzenlemesi olarak eklendi. TryCatch'ı hatalı mı kullanıyorum? – SFun28

+0

Emin değilim; Başkalarının sana yardım etmesine yardımcı olabileceğini düşündüm. FWIW, bence "bastır", muhtemelen aradığın şey. –

cevap

7

suppressWarnings()

http://stat.ethz.ch/R-manual/R-patched/library/base/html/warning.html

x = c(1,2,3,4,5,6) 
y = c(1,1,1,0,0,0) 
result = suppressWarnings(glm(y~x , family = binomial(link = "logit"))) 
result 

Call: glm(formula = y ~ x, family = binomial(link = "logit")) 

Coefficients: 
(Intercept)   x 
     165.32  -47.23 

Degrees of Freedom: 5 Total (i.e. Null); 4 Residual 
Null Deviance:  8.318 
Residual Deviance: 2.215e-10 AIC: 4 

Edit 1 deneyin:

Düzenleme İşte
try-catch var =====================

Yukarıdaki kodun bir bölümünde yer alan yukarıdaki glm() deyiminden hata göstermek istiyorsanız, warnings() ifadesini ekleyebilirsiniz.

stoerr <- warnings() 
stoerr 

Warning message: 
glm.fit: fitted probabilities numerically 0 or 1 occurred 
+0

işe yaradı! @Josha'nın kapanmadan önce tryCatch'e yanıt vermesini bekleyeceğim. – SFun28

+0

@ SFun28: Hala hatayı göstermek istiyorsanız, hatanın görünmesini istediğiniz uyarıları() ekleyin. –

+0

son yorumunuzu tam olarak takip etmedi. suppressWarnings sadece içerilen kodu bastıracak, değil mi? – SFun28

İlgili konular