Проверьте, имеет ли переменная значение ''

В script я пытаюсь запустить, иногда переменные заполняются с помощью '' (что означает: полностью пусто), например

variable <- ''

Кто-нибудь знает о методе проверки, имеет ли переменная значение ''?

is.null(variable), похоже, не работает. '' не совпадает с NULL.

Ответ 1

'' - пустой символ. Это не означает "полностью пустой" - это действительно 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 из ваших данных из get-go, чтобы они не распространялись в такой ситуации, как указано выше.

Ответ 2

В пакете stringi есть функция для этого.

require(stringi)    
stri_isempty(c("A","")) 

Вы также можете установить этот пакет из github: https://github.com/Rexamine/stringi

Ответ 3

Если вы хотите одновременно проверить и заменить эти значения на NA, как обычно, просто используйте dplyr::na_if():

variable <- ''
dplyr::na_if(variable, "")
#> [1] NA