Ответ 1
Используйте функцию identical
, чтобы проверить это.
a <- character(0)
identical(a, character(0)) # returns TRUE
identical(a, "") # returns FALSE
identical(a, numeric(0)) # returns also FALSE
Я предполагаю, что это невероятно просто, но я не могу найти ответ.
Я пишу инструкцию IF, но тест заключается в том, что объект возвращает значение character(0)
. Я не уверен, как иметь дело с character(0)
в инструкции.
Предполагая Test <- character(0)
или значение:
if (identical(Pols4,character(0))) {
print('Empty')
} else {
print('Not Empty')
}
Он по-прежнему не работает.....
Используйте функцию identical
, чтобы проверить это.
a <- character(0)
identical(a, character(0)) # returns TRUE
identical(a, "") # returns FALSE
identical(a, numeric(0)) # returns also FALSE
Добавление обязательного ответа. В пакете rlang
есть функция is_empty()
, которая делает именно то, что вы хотите.
Test <- character(0)
rlang::is_empty(Test)
#[1] TRUE
Это также работает для пустых векторов, которые не являются символами. Например, это работает в случае, который Патрик Рукс описывает в комментариях.
Test <- as.Date(character(0))
rlang::is_empty(Test)
#[1] TRUE
Загрузка пакета 'tidyverse' также загружает is_empty()
.
Используйте метод length():
> check <- function(value) {
+ if (length(value)==0) {
+ print('Empty')
+ } else {
+ print('Not Empty')
+ }
+ }
> check("Hello World")
[1] "Not Empty"
> check("")
[1] "Not Empty"
> check(character(0))
[1] "Empty"
Многие люди забывают, что такие функции, как str_locate_all() require %>% unlist()
или %>%
. [[1]]
Затем вы можете легко обнаружить символ (0) с помощью функции length()
if > 0
, например, можно безопасно использовать вывод str_locate_all
.
Пример:
value <- str_extract_all("kvk :", ascii_digit(8,8)) %>% unlist()
if(length(value) > 0) {
#dosomething
}