Обработка пустых строк при обнаружении строк - PullRequest
4 голосов
/ 28 марта 2019

Я хотел бы использовать str_detect и не конвертировать "" в другой строковый шаблон.Есть ли простой способ справиться с пустыми строковыми шаблонами "", который прямо сейчас генерирует предупреждение.Я хотел бы, чтобы это произвело ИСТИНА, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ЛОЖЬ

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

Ответы [ 4 ]

3 голосов
/ 28 марта 2019

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

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

#[1]  TRUE FALSE FALSE FALSE FALSE
2 голосов
/ 28 марта 2019

Вот способ с пакетом stringi База пакета stringr.

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

Необходимо проверить значение NA, в противном случае stri_detect_* вернет NA.

2 голосов
/ 28 марта 2019

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

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)
1 голос
/ 28 марта 2019

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

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

output-

 matt   joe   liz        <NA> 
 TRUE FALSE FALSE FALSE FALSE 
...