4.3 Pacote stringr para trabalhar com textos
O R básico não tem uma sintaxe consistente para trabalhar com textos. O pacote stringr ajuda a realizar todas as tarefas básicas de manipulação de texto, exigindo que o usuário estude apenas uma sintaxe.
O stringr também é construído sobre a biblioteca ICU, implementada em C e C++, apresentando resultados rápidos e confiáveis.
4.3.1 Regras básicas
- As funções começam com
str_. Caso esqueça o nome de uma função, basta digitarstringr::str_e apertarTABpara ver quais são as opções. - O primeiro argumento da função é sempre uma
string.
4.3.2 Funções do stringr
str_detect()retornaTRUEse a regex é compatível com a string eFALSEcaso contrário.
txt <- c("acho que sim", "acho que não")
str_detect(txt, "que")#> [1] TRUE TRUE
str_detect(txt, "sim")#> [1] TRUE FALSE
str_lengh()retorna o comprimento de uma string.
str_length('decisão favorável')#> [1] 17
str_trim()retira espaços e quebras de linha/tabs no início ou final de string.
string <- '\n essa string é muito suja \n'
c(string, str_trim(string))#> [1] "\n essa string é muito suja \n"
#> [2] "essa string é muito suja"
str_replace()estr_replace_all()substituem um padrão (ou todos) encontrado para um outro padrão
string <- 'Recurso parcialmente parcialmente procedente'
str_replace(string, 'parcialmente ', '')#> [1] "Recurso parcialmente procedente"
str_replace_all(string, 'parcialmente ', 'x ')#> [1] "Recurso x x procedente"
str_replace(string, '(parcialmente )+', 'x ')#> [1] "Recurso x procedente"
str_replace_all('string com muitos espaços', ' +', ' ') # tirar espaços extras#> [1] "string com muitos espaços"
str_match()estr_match_all()extrai pedaços da string identificados pela regex. Caso queira extrair somente a parte identificada, use parênteses.
frases <- c('a roupa do rei',
'de roma',
'o rato roeu')
str_match(frases, 'roe')#> [,1]
#> [1,] NA
#> [2,] NA
#> [3,] "roe"
str_match_all(frases, 'ro')#> [[1]]
#> [,1]
#> [1,] "ro"
#>
#> [[2]]
#> [,1]
#> [1,] "ro"
#>
#> [[3]]
#> [,1]
#> [1,] "ro"
str_match(frases, 'o (ro)')#> [,1] [,2]
#> [1,] NA NA
#> [2,] NA NA
#> [3,] "o ro" "ro"
str_split()separa uma string em várias de acordo com um separador.
string <- 'eu sei, usar virgulas, de forma, perfeita'
str_split(string, ', ')#> [[1]]
#> [1] "eu sei" "usar virgulas" "de forma" "perfeita"
str_split(string, ', ', simplify = TRUE)#> [,1] [,2] [,3] [,4]
#> [1,] "eu sei" "usar virgulas" "de forma" "perfeita"
# avançado: quebrar por um padrão, mas mantendo ele na string
# look arounds
str_split(string, '(?<=, )')#> [[1]]
#> [1] "eu sei, " "usar virgulas, " "de forma, " "perfeita"
str_sub()extrai uma parte da string de acordo com os índices.
string <- 'quero pegar só uma parte disso'
str_sub(string, 13, 14)#> [1] "só"
str_sub(string, -5, -1) # usar números negativos para voltar do final da string#> [1] "disso"
indices <- str_locate(string, 'parte')
indices#> start end
#> [1,] 20 24
str_sub(string, indices) # pode ser útil usar com str_locate.#> [1] "parte"
str_subset()retorna somente as strings compatíveis com a regex.
frases <- c('a roupa do rei', 'de roma', 'o rato roeu')
str_subset(frases, 'd[eo]')#> [1] "a roupa do rei" "de roma"