Comment chasser les bugs dans r

La chasse aux bugs dans R peut parfois être une situation délicate. Bien que le message d'erreur vous indique toujours la ligne de code génère l'erreur, il peut ne pas être la ligne de code où les choses ont commencé à aller mal. Cela rend la chasse aux bugs une entreprise complexe, mais certaines stratégies simples peuvent vous aider à traquer ces créatures satanés.

Sommaire

Calculer le logit

Pour illustrer certaines stratégies bug-chasse dans R, utilisez un exemple simple. Disons, par exemple, votre collègue a écrit deux fonctions pour calculer le log des deux proportions et les pourcentages, mais il ne peut pas les amener à travailler. Donc, il vous demande d'aider à trouver les bugs. Voici le code qu'il vous envoie:

# Vérifie la saisie et fait logit calculationlogit lt; - la fonction (x) x> 1, "NA", x) log (x / (1 - x)) # transforme pourcentage nombre et appelle logitlogitpercent lt; - la fonction (x) {x lt; - gsub ("%", "", x) logit (as.numeric (x))}



Copiez et collez ce code dans l'éditeur, et enregistrez le fichier en utilisant, par exemple, logitfunc.R comme son nom. Après cela, la source du fichier dans R de l'éditeur en utilisant soit le source () fonction ou la touche de source ou une commande de l'éditeur de votre choix. Maintenant, le code de fonction est chargé dans R, et vous êtes prêt à commencer la chasse.

Le log est rien d'autre que le logarithme de la cote, calculée comme log (x / (1-x)) si X est la probabilité d'un événement qui se déroule. Les statisticiens utilisent ce lors de la modélisation des données binaires en utilisant des modèles linéaires généralisés. Si jamais vous avez besoin de calculer un logit vous-même, vous pouvez utiliser la fonction qlogis () pour cela. Pour calculer les probabilités des valeurs logit, vous utilisez le (plogis) fonction.

Sachez où une erreur provient de

Votre collègue se plaint qu'il a obtenu une erreur en essayant le code suivant:

> Logitpercent ('50% ') Erreur dans 1 - x: argument non-numérique pour opérateur binaire

Effectivement, mais vous ne trouvez pas le code 1 - x dans le corps du logitpercent (). Donc, l'erreur vient d'ailleurs. Pour savoir d'où, vous pouvez utiliser la retraçage () fonction immédiatement après l'erreur est survenue, comme ceci:

> Retraçage () 2: logit (as.numeric (x)) au logitfunc.R # 91: logitpercent («50%»)

Ce retraçage () fonction imprime ce qu'on appelle le double appel qui conduisent à la dernière erreur. Cette pile d'appel représente la séquence d'appels de fonction, mais dans l'ordre inverse. La fonction au sommet est la fonction dans laquelle l'erreur réelle est générée.

Dans cet exemple, appelée R logitpercent () la fonction et la fonction qui, à son tour, appelée logit (). Le retraçage vous dit que l'erreur est survenue à l'intérieur du logit () fonction. Plus encore, la retraçage () fonction vous dit que l'erreur est survenue dans la ligne 9 du logitfunc.R fichier de code, comme indiqué par logitfunc.R n ° 9 dans le retraçage () sortie.

La pile d'appel vous donne un tas d'informations - parfois trop. Il peut pointer vers une fonction interne obscur que celui qui a jeté l'erreur. Si cette fonction ne sonne pas une cloche, vérifiez haut dans la pile d'appel pour une fonction que vous reconnaissez et démarrer le débogage à partir de là.


» » » » Comment chasser les bugs dans r