''
является пустым персонажем. Это не означает «полностью пустой» - это действительно NULL
.
Чтобы проверить это, просто проверить равенство:
if (variable == '') …
Если вы хотите проверить существует ли переменная, вам нужно использовать ... exists
:
if (exists('variable')) …
Но на самом деле существует очень мало случаев использования для exists
в нормальном коде, поскольку, как автор кода, вы должны знать, какие существуют переменные, а какие нет. Скорее, это в первую очередь полезно в библиотечных функциях.
Однако ошибка, вы получаете,
пропущенное значение где TRUE/FALSE требуется
делает не означает, что переменная не существует. Скорее, if
не может справиться с отсутствующими значениями - т. Е. NA
. NA
происходит в результате многих вычислений, которые сами содержат значение NA
. Например, сравнивая NA
любое значение (NA
даже сама) снова дает NA
:
variable = NA
variable == NA
# [1] NA
С if
ожидает TRUE
или FALSE
, он не может иметь дело с NA
. Если есть шанс, что ваши ценности могут быть NA
, вы должны проверить это явно:
if (is.na(variable) || variable == '') …
Однако, это, как правило, лучше исключить NA
значения из данных с самого начала идти, так что они не должен не распространяются на ситуацию, подобную приведенной выше.
Спасибо! возможно, я задал неправильный вопрос. это ошибка, которую я получаю: «Ошибка в if (variable ==" ») {: отсутствует значение, где требуется TRUE/FALSE". Переменная не кажется вообще (должна быть ошибка в моем скрипте).Есть ли способ проверить, существует ли переменная? – rdatasculptor
@ user1983395 Действительно, это совершенно другой вопрос. Позвольте мне исправить свой ответ. –
большое спасибо! Вы мне очень помогли. – rdatasculptor