Wie für Bugs in R to Hunt

Die Jagd nach Bugs in R kann manchmal eine schwierige Situation. Obwohl die Fehlermeldung Sie immer erzählt, welche Codezeile den Fehler erzeugt, kann es nicht die Code-Zeile, wo die Dinge schief gehen begann. Dies macht Fehler ein komplexes Geschäft der Jagd, aber einige einfache Strategien, können Sie diese lästigen Kreaturen aufzuspüren helfen.

Menu

Berechnen Sie die logit

Um einige Bug-Jagd-Strategien in R illustrieren, ein einfaches Beispiel. Sagen Sie zum Beispiel Ihr Kollege zwei Funktionen schrieb die logit von beiden Anteile und Prozentanteile zu berechnen, aber er nicht bekommen kann ihnen zu arbeiten. Also, er bittet Sie, die Fehler zu finden. Hier ist der Code, den er sendet Ihnen:

# Prüft die Eingangs und tut Logit- calculationlogit lt; - Funktion (x) x> 1, "NA", x) log (x / (1 - x)) # transformiert Prozentsatz zu Anzahl und ruft logitlogitpercent lt; - Funktion (x) {x lt; - gsub ( "%", "", x) logit (as.numeric (x))}

Kopieren und fügen Sie diesen Code in den Editor, und speichern Sie die Datei unter Verwendung von zum Beispiel logitfunc.R wie sein Name. Danach wird Quelle mit der Datei in R aus dem Editor entweder die Quelle() Funktion oder die Quelle-Taste oder einen Befehl aus dem Editor Ihrer Wahl. Nun ist die Funktionscode wird in R geladen, und Sie sind bereit, die Jagd zu beginnen.

Die Logit ist nichts anderes als der Logarithmus der Chancen, berechnet als log (x / (1-x)) ob x ist die Wahrscheinlichkeit, einen Ort Veranstaltung teilnehmen. Statistiker verwenden diese, wenn binäre Daten Modellierung verallgemeinerten linearen Modelle. Wenn Sie jemals ein Logit selbst berechnen müssen, können Sie die Funktion nutzen qlogis () dafür. Zur Berechnung der Wahrscheinlichkeiten von Logit-Werte, die Sie verwenden die plogis () Funktion.

Wissen, wo ein Fehler kommt aus

Ihr Kollege beschwerte sich, dass er einen Fehler bekam, wenn Sie den folgenden Code versuchen:

> Logitpercent ('50% ') Fehler bei 1 - x: nicht-numerische Argument Binäroperators

Sicher genug, aber Sie nicht finden, den Code 1 - x in den Körper logitpercent (). So kommt der Fehler von woanders. Um zu wissen, von wo aus, können Sie mit dem zurück verfolgen() Funktion unmittelbar nach dem der Fehler aufgetreten ist, wie folgt aus:

> Traceback () 2: logit (as.numeric (x)) bei logitfunc.R # 91: logitpercent ( "50%")

Dies zurück verfolgen() Funktion druckt, was die aufgerufen wird, Call-Stack dass führen zu den letzten Fehler. Diese Call-Stack stellt die Sequenz von Funktionsaufrufen, aber in umgekehrter Reihenfolge. Die Funktion an der Spitze ist die Funktion in dem der tatsächliche Fehler erzeugt wird.

In diesem Beispiel bezeichnet die R logitpercent () Funktion und die Funktion, die wiederum aufgerufen logit (). Die Zurückverfolgungs sagt Ihnen, dass der Fehler innerhalb des aufgetreten logit () Funktion. Mehr noch, die zurück verfolgen() Funktion sagt Ihnen, dass der Fehler in Zeile 9 des aufgetreten logitfunc.R Code-Datei, wie durch logitfunc.R # 9 in dem zurück verfolgen() Ausgabe.

Der Call-Stack gibt Ihnen eine ganze Menge Informationen - manchmal zu viel. Es kann als eine auf einigen obskuren interne Funktion zeigen, die den Fehler warf. Wenn diese Funktion nicht eine Glocke läuten, überprüfen höher in den Call-Stack für eine Funktion, die Sie erkennen und starten Sie das Debuggen von dort.

Menü