Wie kann ich die Fehler ignorieren und Verarbeitung fortsetzen Liste posten?
Ich bin mit mehreren hundert Datensätzen durch glm.nb
mit einem wrapper-Funktion. Nichts besonderes, ich pass auf jeden Punkt der Liste über llply
, dann passen mit glm.nb
schreiben Sie die Koeffizienten a data.frame
und Rückkehr zurück.
Nicht überraschend, glm.nb fehl zu konvergieren, bei manchen Datensätzen. Anstatt die Funktion haben, Husten bis eine Fehlermeldung und bricht, würde ich es vorziehen, dass es weiterhin durch den rest der Datenbestände und liefert Ergebnisse, wo möglich.
Mein Erster Versuch war dieser:
res.model <- function(x)
{
res <- try(invisible(glm.nb(x~y, data=x)))
if(!("try-error" %in% class(res)))
{
return (data.frame(site=unique(x$site_name),species=unique(x$species),coef=res$coefficients[2]))
}
}
Irgendwelche Gedanken auf eine allgemeinere Art und Weise, dass Fehler ignoriert, so kann ich diese Arbeit machen?
- Ich weiß nicht viel über
plyr
, aber nichtfailwith()
wie in der intro-guide-Hilfe? hatte.co.nz/plyr/plyr-intro-090510.pdf - Möglicherweise Verwandte: stackoverflow.com/questions/2963729/r-catching-errors-in-nls
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich ein nls (), die ich ausführen, dass hat die gleiche Herausforderung. Ich bin der Anwendung der regression auf jede Gruppe, die in einem Daten.Rahmen, aber diese Logik sollte auch für Sie arbeiten (glaube ich):
so, wenn ich denke, wie man diese für Ihre situation zu erhalten, es wäre so etwas wie:
Die Art, wie ich mit dieser, ich bin werfen die NA Werte alle Zeit der regression nicht konvergiert. Möchten Sie vielleicht etwas anderes zu tun.
können Sie auch die failwith Funktion in plyr. wenn f die Funktion, die Sie auf der Durchreise sind plyr, können Sie stattdessen übergeben Sie der Funktion
natürlich, können Sie Sie ersetzen, NA mit was auch immer return-Wert, den Sie benötigen, wenn die Funktion fehlschlägt. dieser code wird aufgehoben, direkt von der Beispiele für failwith.