2017-02-17 5 views
2

Это должно быть просто на основе сообщений, таких как this, но почему-то я не могу заставить его работать. Что не так с этим примером?Создайте собственное предупреждение вне функции?

x<-1 
y<-0 
if(x>y){warning("careful, one is greater than zero!")} 

Он работает с stop():

if(x>y){stop("careful, one is greater than zero!")} 

Так как я делаю простой синтаксической ошибки или предупреждения, не предполагается использовать вне функций?

+6

Что именно не работает? Кажется, это работает для меня ... – joran

+0

Возможно, вы не включили отображение предупреждений? –

+0

Первый ничего не возвращает. Вторая выводит предупреждение. –

ответ

1

Ваш код отлично работает со мной. Я использую R 3.3.2.

Я думаю, что решение вашей проблемы - это проверить, включены ли предупреждающие сообщения в сеансе. Если вы читаете ? Опции, вы заметите, что между значениями, возвращаемыми функцией, есть значение предупреждения.

Из справки: предостеречь: устанавливает обработку предупредительных сообщений. Если предупреждение отрицательное, все предупреждения игнорируются. Если предупреждение равно нулю (по умолчанию), предупреждения сохраняются до тех пор, пока функция верхнего уровня не вернется. Если было сообщено о 10 или менее предупреждениях, они будут напечатаны иначе, если будет указано, сколько из них было сигнализировано. Объект, называемый last.warning, создается и может быть напечатан с помощью предупреждений функции. Если предупреждение одно, предупреждения печатаются по мере их появления. Если предупреждение два или более, все предупреждения превращаются в ошибки.

Итак, если у вас есть отрицательное значение для предупреждения, вы не увидите предупреждающие сообщения. Вы можете включить предупреждающие сообщения следующим образом:

options(warn=1) 

Попробуйте изменить это и повторно запустить свой код.