2015-08-10 5 views
2

Существует ли функция, которая возвращает TRUE/FALSE, если кусочки кода генерируют предупреждение.логический оператор, если код генерирует предупреждение в R

Так, например:

sqrt(-1) 

сгенерирует предупреждающее сообщение, и я ищу для функции, которая может сделать следующее:

functionname(sqrt(-1)) 

> TRUE 

В каком «TRUE» означает, что кусок код внутри функции генерирует предупреждающее сообщение. Надеюсь, я ясно дал понять, что я имею в виду.

+0

Вы можете проверить [здесь] (http://stackoverflow.com/questions/3903157/ how-can-i-check-if-a-function-call-results-in-a-warning) – akrun

+0

Зачем вы хотите это сделать? – Dason

+0

'functionname <- function (x) ifelse (isTRUE (tryCatch (x, warning = function (w) TRUE)), TRUE, FALSE)' – RHertel

ответ

4

Я не знаю, если один существует из коробки, но вы можете написать свой собственный, используя tryCatch

givesWarning <- function(expr){ 
    tryCatch(eval(expr), 
      warning = function(cond) TRUE) 
} 

givesWarning(sqrt(-1)) 
+1

В соответствии с OP запрашивается функция, которая возвращает TRUE/FALSE в зависимости от того, есть предупреждение или нет. – RHertel