Znalazłem to post sprzed roku i używam R version 2.11.1 (2010-05-31)
, ale wciąż otrzymuję komunikaty o błędach bez numerów linii.Numery linii skryptu R w przypadku błędu?
Jakieś rozwiązanie?
Znalazłem to post sprzed roku i używam R version 2.11.1 (2010-05-31)
, ale wciąż otrzymuję komunikaty o błędach bez numerów linii.Numery linii skryptu R w przypadku błędu?
Jakieś rozwiązanie?
Podane tam odpowiedzi są nadal aktualne. Zwracanie numerów linii ze skryptu nie jest proste, ale R może dostarczyć znacznie więcej informacji o tym, gdzie można znaleźć błąd.
Można użyć opcji błędach, aby zapisać informacje w pliku, na przykład:
options(error = quote({
sink(file="error.txt");
dump.frames();
print(attr(last.dump,"error.message"));
traceback();
sink();
q()}))
The findLineNum function() może być używany, jeśli masz nazwę pliku gdzieś dostępne. Jeśli komunikat o błędzie, można zrobić coś takiego:
dump.frames()
x <- attr(last.dump,"error.message")
ll <- gsub("Error in (.*) : .*","\\1",x)
lln <- findLineNum(srcfile,ll)
+1 Dzięki, to rozczarowujące, że nie jest jeszcze domyślnie zaimplementowana w R. Wydaje mi się, że jest to bardzo pożądana funkcja. –
To nie pomoże, jeśli błąd jest na najwyższym poziomie skryptu R. –
W nadchodzącym R 2.14, zespół rdzeń czyni postępy w kierunku realizacji tej funkcji. Funkcje skryptów załadowane z source(file=..., keep.file=TRUE)
będą zawierały atrybut srcref
, który identyfikuje zakres znaków odpowiadający definicji funkcji w pamięci wewnętrznej pliku źródłowego zapisanego jako obiekt klasy srcfilecopy
.
To nie powoduje natychmiastowego debugowania na poziomie linii, ale pozwala uzyskać przybliżone numery linii, jeśli chcesz zabrudzić sobie ręce. Jest to także postęp.
Otrzymuję komunikaty o błędach z numerami linii. Jak ładujesz swoje skrypty? – Shane
@Shane Używam Rscript. Jak ładujesz swoje skrypty? –
Używam source() z GUI systemu Windows. – Shane