2013-03-03 11 views
8

Mam duży pętli że Pętle setki razy, a na jej końcu produkuje to ostrzeżenie:Komunikat ostrzegawczy Numer wiersza R

Warning messages: 
1: In min(j, na.rm = TRUE) : 
    no non-missing arguments to min; returning Inf 

Czy jest jakiś sposób mogę poprosić R, które podszywają ostrzeżenie wygenerowano wiadomość? Komentarz poniżej


OP: „Nie bezpośrednio mieć min jako linia Jego prawdopodobnie zagnieżdżone w innych funkcjach indziej bym nie zapytał, jak wiedziałem, że był problem pochodzących z min.. "

+1

wygląda jak dajesz min function() złe wejście. – N8TRO

+2

Wszystkie dane do 'min' to' NA' jest tym, co mówi. Spróbuj: 'min (rep (NA, 10), na.rm = T)' – Arun

Odpowiedz

8

Można spróbować ustawić:

> options(warn=2) 

A potem, kiedy Twój kod zatrzymuje się na pierwszym ostrzeżeniem, używając traceback() zobaczyć ślad stosu.

Pomoże ci to tylko z pierwszym ostrzeżeniem.

+0

Naprawdę nie rozwiązanie ... bardziej jak kiepskie obejście. Nie wiem, dlaczego R ignoruje numery linii. Bardzo trudne do debugowania. – TMS

+1

To nie działa dla mnie. Funkcja 'traceback()' zwraca "brak dostępnego śledzenia". Ale przydatny był następujący odpowiednik opcji (błąd = odzyskać) dla ostrzeżeń: 'options (warning.expression = quote (recover()))' – Harsh

+0

Zamiast tej pracy każdy może określić niebezpieczny sposób zlokalizowania numeru linii ostrzeżenia ? –

2

Jest to podstawowa howto for pętla, naprawdę nie R zależny

Tuż przed linia min umieścić

print(paste("j is", j, "\n")) # or instead of j, use i, or whichever index you are using  
min(j, na.rm = TRUE) 

wtedy będziesz miał dobry pomysł, gdzie jest błąd.


chodzi o bardziej R właściwego rozwiązania, jeśli j nadchodzi z data.frame, macierzy, listy, itp,
chcesz dowiedzieć się, jakie kawałek (część iteracja) nie ma nic, ale NA s.

Do tego można użyć coś podobnego

apply(myDF, 1, function(x) all(is.na(x))) 
+0

Nie mam bezpośrednio min jako linii. Prawdopodobnie został zagnieżdżony w innych funkcjach, inaczej nie zadałbym tego pytania, ponieważ wiedziałem, że to problem pochodzący z min. – user1234440

+0

Wspomnienie, że w pierwotnym pytaniu byłoby pomocne. W takim przypadku najlepiej jest użyć 'traceback()', ponieważ @NPE sugeruje –

+0

To nie jest odpowiedź na pytanie. – TMS

Powiązane problemy