Обработка пустых строк при обнаружении строк

#r #stringr

#r #stringr

Вопрос:

Я хотел бы использовать str_detect и не преобразовывать «» в другой шаблон строки. Есть ли простой способ справиться с шаблонами пустых строк «», который прямо сейчас выдает предупреждение. Я хотел бы, чтобы это выдавало TRUE, FALSE, FALSE, FALSE, FALSE

 library( tidyverse )
str_detect('matt', c( "matt","joe","liz","", NA))
  

Комментарии:

1. просто сделайте это наоборот, str_detect(c( "matt","joe","liz","", NA), 'matt') если вы действительно хотите, чтобы последний элемент из вывода был FALSE вместо NA , ваш ввод должен быть c( "matt","joe","liz","", "NA") , обратите NA внимание внутри `»`

Ответ №1:

Мы можем использовать

 library(stringr)
library(tidyr)
str_detect(replace_na(v1, ''), 'matt')
#[1]  TRUE FALSE FALSE FALSE FALSE
  

Если совпадение не для подстроки, то %in% было бы полезно

 v1 %in% 'matt'
#[1]  TRUE FALSE FALSE FALSE FALSE
  

данные

 v1 <- c( "matt","joe","liz","", NA)
  

Ответ №2:

Если вы не привязаны к, str_detect() возможно, попробуйте grepl() ?

 grepl("matt", c( "matt","joe","liz","", NA))

#[1]  TRUE FALSE FALSE FALSE FALSE
  

Комментарии:

1. Я предпочитаю этот, потому что он лучше обрабатывает NAs (str_detect не вернет ни одной строки, содержащей NAs)

Ответ №3:

Вот способ с пакетом, stringi являющимся основой пакета stringr .

 x <- c( "matt","joe","liz","", NA)
stringi::stri_detect_regex(x, 'matt') amp; !is.na(x)
#[1]  TRUE FALSE FALSE FALSE FALSE
  

NA Значение должно быть проверено, в противном случае stri_detect_* будет возвращено NA .

Ответ №4:

Вы также могли бы сделать-

 v1 <- c( "matt","joe","liz","", NA)
sapply(v1, identical, "matt")
  

Вывод-

  matt   joe   liz        <NA> 
 TRUE FALSE FALSE FALSE FALSE