R/encoding.R

Defines functions encodeit

encodeit <- function(x, from = "UTF-8", to = "latin1",
                     skip_class = "rpart.rules",
                     sub = "??") {
  if (skip_class %in% class(x)) {
    return(x)
  }
  if ("list" %in% class(x)) {
    return(lapply(x, encodeit))
  }
  if ("data.frame" %in% class(x)) {
    return(data.frame(lapply(x, function(y) encodeit(y))))
  }
  if (any(c("factor", "character") %in% class(x))) {
    is_factor <- class(x) %in% "factor"
    if (is_factor) levs <- levels(x)
    x <- as.character(x)
    x <- iconv(x, from, to, sub = sub)
    x <- gsub("(\\?){2,}", sub, x)
    if (is_factor) x <- factor(x, levels = encodeit(levs))
  }
  return(x)
}

Try the lares package in your browser

Any scripts or data that you put into this service are public.

lares documentation built on Nov. 5, 2023, 1:09 a.m.