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 apertarTAB
para 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()
retornaTRUE
se a regex é compatível com a string eFALSE
caso 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"