2013-03-03 71 views
8

我有一個大的循環,循環上百次,並在其結束它會產生這樣的警告:警告信息行編號R

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

有什麼辦法,我可以問R,它行警告消息是在?下面


OP的評論: 「我不直接擁有分鐘的線它大概嵌套在其他功能,否則我就不會問這個問題,因爲我知道它是從未來最小的一個問題。 「

+1

它看起來像你給函數MIN()不好的輸入。 – N8TRO 2013-03-03 19:52:25

+2

所有數據到'min'都是'NA'。嘗試:'min(rep(NA,10),na.rm = T)' – Arun 2013-03-03 19:52:54

回答

8

你可以嘗試設置:

> options(warn=2) 

,然後,當你的代碼停在第一個警告,使用traceback()看到堆棧跟蹤。

雖然這隻會幫助您解決第一個警告。

+0

不是一個真正的解決方案......更像是一個糟糕的解決方法。我不知道爲什麼R忽略行號。非常難以調試。 – TMS 2013-08-15 16:39:38

+1

這不適合我。 'traceback()'返回「無回溯可用」。但是'選項下面當量(錯誤=恢復)'的警告是有用的:'選項(warning.expression =報價(恢復()))' – Harsh 2013-08-29 17:40:15

+0

而是這項工作的周圍任何人都可以指定dierct方式來定位警告行號? – 2014-09-11 08:35:04

2

這是一個基本for循環HOWTO,沒有真正R依賴

權在你min線把

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

,那麼你將有其中的錯誤是一個好主意。


至於更R相關的解決方案,如果j是從data.frame,矩陣,列表等,
未來你想找到這一塊(重複部分)無關,但NA秒。

對於您可以使用類似

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

我不直接將min作爲一行。它可能嵌套在其他功能,否則我不會問這個問題,因爲我知道這是一個來自min的問題。 – user1234440 2013-03-03 20:23:38

+0

提到你的原始問題會有幫助。如果是這樣的話,那麼最好的辦法是使用'回溯()'爲@NPE表明 – 2013-03-03 20:26:15

+0

這實際上不是問題的答案.. – TMS 2013-08-15 16:41:50