R/remove_acentos.R

Defines functions remove_acentos

Documented in remove_acentos

#' Funcao para remover os acentos
#'
#' @details Função para forçar a remocao de acentos de uma string
#' @source https://pt.stackoverflow.com/questions/46473/remover-acentos
#' @param str vetor de strings que terão seus acentos retirados.
#' @param pattern vetor de strings com um ou mais elementos indicando quais acentos deverão ser retirados.
#'            Para indicar quais acentos deverão ser retirados, um vetor com os símbolos deverão ser passados.
#'            Exemplo: pattern = c("´", "^") retirará os acentos agudos e circunflexos apenas.
#'            Outras palavras aceitas: "all" (retira todos os acentos, que são "´", "`", "^", "~", "¨", "ç")
#' @return O resultado é uma string com o texto sem acentos
#' @examples texto <- remove_acentos("Participação")
#' @export
remove_acentos <- function(str, pattern = "all") {
  # SOURCE :: https://pt.stackoverflow.com/questions/46473/remover-acentos

  # Rotinas e funções úteis V 1.0
  # rm.accent - REMOVE ACENTOS DE PALAVRAS
  # Função que tira todos os acentos e pontuações de um vetor de strings.
  # Parâmetros:
  # str - vetor de strings que terão seus acentos retirados.
  # patterns - vetor de strings com um ou mais elementos indicando quais acentos deverão ser retirados.
  #            Para indicar quais acentos deverão ser retirados, um vetor com os símbolos deverão ser passados.
  #            Exemplo: pattern = c("´", "^") retirará os acentos agudos e circunflexos apenas.
  #            Outras palavras aceitas: "all" (retira todos os acentos, que são "´", "`", "^", "~", "¨", "ç")
  if(!is.character(str))
    str <- as.character(str)

  pattern <- unique(pattern)

  if(any(pattern=="Ç"))
    pattern[pattern=="Ç"] <- "ç"

  symbols <- c(
    acute = "áéíóúÁÉÍÓÚýÝ",
    grave = "àèìòùÀÈÌÒÙ",
    circunflex = "âêîôûÂÊÎÔÛ",
    tilde = "ãõÃÕñÑ",
    umlaut = "äëïöüÄËÏÖÜÿ",
    cedil = "çÇ"
  )

  nudeSymbols <- c(
    acute = "aeiouAEIOUyY",
    grave = "aeiouAEIOU",
    circunflex = "aeiouAEIOU",
    tilde = "aoAOnN",
    umlaut = "aeiouAEIOUy",
    cedil = "cC"
  )

  accentTypes <- c("´","`","^","~","¨","ç")

  if(any(c("all","al","a","todos","t","to","tod","todo")%in%pattern)) # opcao retirar todos
    return(chartr(paste(symbols, collapse=""), paste(nudeSymbols, collapse=""), str))

  for(i in which(accentTypes%in%pattern))
    str <- chartr(symbols[i], nudeSymbols[i], str)

  return(str)
}
hersonpc/RISGMv documentation built on Aug. 26, 2020, 9:30 a.m.