J'ai trouvé ce post depuis un an, et j'utilise R version 2.11.1 (2010-05-31)
, mais je reçois toujours des messages d'erreur sans les numéros de ligne.R numéros de ligne de script à l'erreur?
Une solution?
J'ai trouvé ce post depuis un an, et j'utilise R version 2.11.1 (2010-05-31)
, mais je reçois toujours des messages d'erreur sans les numéros de ligne.R numéros de ligne de script à l'erreur?
Une solution?
Les réponses données ici sont encore valides. Renvoyer des numéros de ligne à partir d'un script n'est pas si simple, mais R peut vous donner beaucoup plus d'informations sur l'endroit où l'erreur peut être trouvée.
Vous pouvez utiliser les options d'erreur pour enregistrer les informations dans un fichier, par exemple:
options(error = quote({
sink(file="error.txt");
dump.frames();
print(attr(last.dump,"error.message"));
traceback();
sink();
q()}))
La fonction findLineNum() peut être utilisé si vous avez le nom du fichier disponible quelque part. Si vous avez le message d'erreur, vous pouvez faire quelque chose comme:
dump.frames()
x <- attr(last.dump,"error.message")
ll <- gsub("Error in (.*) : .*","\\1",x)
lln <- findLineNum(srcfile,ll)
+1 Merci, c'est un peu décevant qu'il ne soit pas encore implémenté par défaut dans R. Cela me semble être une fonctionnalité très souhaitable. –
Cela n'aide pas si l'erreur est au niveau supérieur d'un script R. –
Dans le prochain R 2,14, l'équipe de base progresse vers la mise en œuvre de cette fonction. Les fonctions des scripts chargés source(file=..., keep.file=TRUE)
contiennent un attribut srcref
, qui identifie la plage de caractères correspondant à la définition de la fonction dans une copie en mémoire du fichier source stocké en tant qu'objet de la classe srcfilecopy
.
Ceci ne fournit pas immédiatement un débogage au niveau de la ligne, mais vous permet d'obtenir des numéros de ligne approximatifs si vous êtes prêt à vous salir les mains. Aussi, c'est un progrès.
Je reçois des messages d'erreur avec des numéros de ligne. Comment chargez-vous vos scripts? – Shane
@Shane J'utilise Rscript. Comment chargez-vous vos scripts? –
J'utilise source() depuis l'interface graphique de Windows. – Shane