警告消息行号R.

时间:2013-03-03 19:45:40

标签: r

我有一个很大的for循环,循环数百次,最后会产生这个警告:

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

有什么方法可以问R在哪一行生成警告信息?


OP的评论如下: “我不直接将min作为一条线。它可能嵌套在其他函数中,我不会问这个问题,因为我知道这是来自min的问题。”

2 个答案:

答案 0 :(得分:10)

您可以尝试设置:

> options(warn=2)

然后,当您的代码在第一次警告时停止,使用traceback()查看堆栈跟踪。

这只会帮助你提出第一个警告。

答案 1 :(得分:2)

这是一个基本的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,matrix,list等, 你想找到哪个块(迭代部分)只有NA s。

为此你可以使用类似

的东西
  apply(myDF, 1, function(x) all(is.na(x)))