簡體   English   中英

警告消息行號 R

[英]Warning Message Line Number R

我有一個很大的 for 循環,它循環了數百次,最后它會產生這個警告:

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

有什么辦法可以問 R 警告消息是在哪一行生成的?


OP 的評論如下:“我沒有直接將 min 作為一行。它可能嵌套在其他函數中,否則我不會問這個問題,因為我知道這是來自 min 的問題。”

您可以嘗試設置:

options(warn = 2)

...將警告視為錯誤。 然后,當您的代碼在第一個警告處停止時,使用traceback()查看堆棧跟蹤。

不過,這只會幫助您解決第一個警告。

要返回默認行為,請使用:

options(warn = 0)

這是一個基本的for循環方法,不是真正依賴於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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM