#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