r - shinythemes - tags$div shiny
RStudio no está seleccionando la codificación que le estoy diciendo que use cuando lea un archivo (4)
Debe probar las funciones de la library(readr)
, como read_csv()
o read_fwf()
(tenga en cuenta el guión bajo en lugar del punto), adivina la codificación del archivo, por lo general lo logra; estas funciones de lectura vienen incluidas en la función de GUI de RStudio "importar conjunto de datos"
Estoy intentando leer el siguiente archivo codificado en UTF-8 en R, pero cada vez que lo leo, los caracteres Unicode no están codificados correctamente:
El script que estoy usando para procesar el archivo es el siguiente:
defaultEncoding <- "UTF8"
detalheVotacaoMunicipioZonaTypes <- c("character", "character", "factor", "factor", "factor", "factor", "factor",
"factor", "factor", "factor", "factor", "factor", "numeric",
"numeric", "numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric", "numeric", "numeric",
"numeric", "character", "character")
readDetalheVotacaoMunicipioZona <- function( fileName ) {
fileConnection = file(fileName,encoding=defaultEncoding)
contents <- readChar(fileConnection, file.info(fileName)$size)
close(fileConnection)
contents <- gsub(''"'', "", contents)
columnNames <- c("data_geracao", "hora_geracao", "ano_eleicao", "num_turno", "descricao_eleicao", "sigla_uf", "sigla_ue",
"codigo_municipio", "nome_municipio", "numero_zona", "codigo_cargo", "descricao_cargo", "qtd_aptos",
"qtd_secoes", "qtd_secoes_agregadas", "qtd_aptos_tot", "qtd_secoes_tot", "qtd_comparecimento",
"qtd_abstencoes", "qtd_votos_nominais", "qtd_votos_brancos", "qtd_votos_nulos", "qtd_votos_legenda",
"qtd_votos_anulados", "data_ult_totalizacao", "hora_ult_totalizacao")
read.csv(text=contents,
colClasses=detalheVotacaoMunicipioZonaTypes,
sep=";",
col.names=columnNames,
fileEncoding=defaultEncoding,
header=FALSE)
}
Leí el envío del archivo en la codificación UTF-8, elimino todas las comillas (se citan los números pares, por lo que debo limpiarlos) y luego alimentar el contenido a read.csv
. Lee y procesa el archivo correctamente, pero parece que no está utilizando la información de codificación que le estoy dando.
¿Qué debo hacer para que use UTF-8 para leer este archivo?
Estoy usando RStudio en OSX si hace alguna diferencia.
Este problema se debe a la configuración local incorrecta, ya sea dentro de RStudio o la línea de comandos R:
Si el problema solo ocurre en RStudio no en la línea de comandos R, vaya a RStudio-> Preferencias: General, díganos qué está configurada la ''Codificación de texto predeterminada:'', haga clic en ''Cambiar'' y pruebe Windows-1252, UTF-8 o ISO8859 -1 (''latin1'') (o bien ''Preguntar'' si siempre quiere que se le pregunte). Captura de pantalla adjunta en la parte inferior. ¡Háganos saber cuál funcionó!
Si el problema también ocurre en la línea de comandos R , haga lo siguiente:
¿ locale -m
en su Mac y dígannos si es compatible con CP1252 o con ISO8859-1 (''latin1'')? Volcar la lista de locales compatibles si es necesario. (También podrías decirnos tu versión de MacOS mientras estás en eso).
Para ambas configuraciones regionales, intente cambiar a esa configuración regional:
# first try Windows CP1252, although that''s almost surely not supported on Mac:
Sys.setlocale("LC_ALL", "pt_PT.1252") # Make sure not to omit the `"LC_ALL",` first argument, it will fail.
Sys.setlocale("LC_ALL", "pt_PT.CP1252") # the name might need to be ''CP1252''
# next try IS08859-1(/''latin1''), this works for me:
Sys.setlocale("LC_ALL", "pt_PT.ISO8859-1")
# Try "pt_PT.UTF-8" too...
# in your program, make sure the Sys.setlocale worked, sprinkle this assertion in your code before attempting to read.csv:
stopifnot(Sys.getlocale(''LC_CTYPE'') == "pt_PT.ISO8859-1")
Eso debería funcionar. Estrictamente, el Sys.setlocale()
debe ir en su ~/.Rprofile
para el inicio, no dentro de su sesión R o código fuente. Sin embargo, Sys.setlocale()
puede fallar, así que ten Sys.setlocale()
. Además, afirme Sys.getlocale()
dentro de su código de configuración temprano y con frecuencia, como lo hago. (realmente, read.csv
debería averiguar si la codificación que utiliza es compatible con la configuración regional, y advertir o error si no).
Háganos saber qué solución funcionó! Estoy tratando de documentar esto de manera más general para que podamos averiguar la mejora correcta.
- Captura de pantalla del menú de codificación de texto predeterminado de Preferencias de RStudio:
Funciona bien para mí.
¿Intentaste cambiar / restablecer la configuración regional?
en mi caso funciona con
Sys.setlocale(category = "LC_ALL", locale = "Portuguese_Portugal.1252")
d <- read.table(text=readClipboard(), header=TRUE, sep = '';'')
head(d)
1 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 20419 20419 ITAPORANGA 33 13 VEREADOR 17157
2 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 20770 20770 MALTA 51 11 PREFEITO 4677
3 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 21091 21091 OLHO D''ÁGUA 32 13 VEREADOR 6653
4 25/04/2014 22:29:30 2012 1 ELEIÇÃO MUNICIPAL 2012 PB 21113 21113 OLIVEDOS 23 13 VEREADOR 3243
...
Tuve el mismo problema con la configuración regional portuguesa en r (MAC OS 10.12.3) Lo he intentado según el hilo anterior y nadie trabajó. Luego encontré esta página web: https://docs.moodle.org/dev/Table_of_locales y solo probé Sys.setlocale(category = "LC_ALL", locale = "pt_PT.UTF-8")
y funciona.