Как обрабатывать R предупреждений в цикле? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть сценарий использования, когда мне нужен некоторый поток управления, основанный на количестве предупреждений, сгенерированных некоторым фрагментом кода:

# clear all warnings 
assign("last.warning", NULL, envir = baseenv())

for (i in 0:100) {
   # call warning-generating code here

   x <- warnings()
   cat(paste('There were',length(x),'warnings generated\n'))
   if (length(x)>10) {
      # do something
   }

   # clear all warnings again
   assign("last.warning", NULL, envir = baseenv())
}

По какой-то причине этот код не работает. Код всегда выдаст There were 0 warnings generated ... почему? Если я запускаю код генерирования предупреждений вне цикла, он выдает ненулевое переменное число предупреждений ...

1 Ответ

1 голос
/ 15 марта 2019

Не уверен, к чему ты стремишься?

# clear all warnings 
assign("last.warning", NULL, envir = baseenv())
x <- rep(NA, 100)
for (i in 1:100) { 
 # call warning-generating code here
  x[i] <- warning()
  cat(paste('There were',sum(!is.na(x)),'warnings generated\n'))
  if (sum(!is.na(x))>10) {
# do something
  }
  # clear all warnings again
  assign("last.warning", NULL, envir = baseenv()
}

Похоже на опечатку - afaik warnings () просто покажет вам предупреждения - которые все еще имеют значение NULL в этой точке в цикле;предупреждение () будет генерировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...