Как использовать функции stringr для удаления всех пустых слов?

#r

Вопрос:

 b lt;- c("books", " ", "animals", "frogs")  #My code:  b[!grepl("^\s $", b)] [1] "books" "animals" "frogs"   #Now, I am working to figure out this solution with stringr package. str_remove_all(b, "^\s $") [1] "books" "" "animals" "frogs"   

Вывод показывает "" , где происходит сбой моего нового кода. Любое решение для получения результата, подобного моему первому коду?

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

1. b[nzchar(trimws(b))]

Ответ №1:

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

 library(stringr) str_subset(b, "^\s $", negate = TRUE) [1] "books" "animals" "frogs"   

Функция, которая соответствует grepl , является str_detect

 b[str_detect(b, "^\s $", negate = TRUE)] [1] "books" "animals" "frogs"   

В base R , мы можем использовать grep с invert = TRUE

 grep("^\s $", b, invert = TRUE, value = TRUE) [1] "books" "animals" "frogs"   

Или без регулярного выражения с trimws (чтобы удалить пробелы, ведущие/отстающие) и использовать nzhcar для создания логического вектора для подмножества

 b[nzchar(trimws(b))] [1] "books" "animals" "frogs"   

Ответ №2:

Две базовые альтернативы R:

 b[nzchar(trimws(b))] # [1] "books" "animals" "frogs"  b[grepl("\S",b)] # [1] "books" "animals" "frogs"   

Ответ №3:

В base R мы можем сделать:

 b[b !=" "]  

Выход:

 [1] "books" "animals" "frogs"   

ИЛИ с stringr :

 library(stringr) str_subset(str_squish(b), "")  
 [1] "books" "animals" "frogs"