On 11-08-15 2:42 PM, Denis Chabot wrote:
Hi,

I usually do not give second thought to accented vowels and R handles 
everything fine thanks to UTF8 being used in my R scripts. But today I have a 
problem. Accented vowels do not behave properly when they were imported into R 
using list.files.

Maybe this is because  OS X (I'm using 10.6.8) still uses MacRoman for file 
names, though visually the names seem to have been read correctly into R.

An example is better than words:

sessionInfo()
R version 2.13.1 (2011-07-08)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] fr_CA.UTF-8/fr_CA.UTF-8/C/C/fr_CA.UTF-8/fr_CA.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base


This does not cause problem:
a = c("1_MO2 crevettes po2crit.Rda", "1_MO2 soles Sète sda.Rda", "1_MO2 turbots 
po2crit.Rda"); a
[1] "1_MO2 crevettes po2crit.Rda" "1_MO2 soles Sète sda.Rda"    "1_MO2 turbots 
po2crit.Rda"

a2 = gsub(" Sète", "S", a); a2
[1] "1_MO2 crevettes po2crit.Rda" "1_MO2 solesS sda.Rda"        "1_MO2 turbots 
po2crit.Rda"


but if instead of creating the vector within the R script, I read it as a 
series of file names, the substitution does not work. I am sorry that I cannot 
make this a reproducible example as it requires the 3 files to exist on your 
computer, but you could create 3 dummy files having the same names in the 
directory of your choice.

don = file.path("données/")
b = list.files(path = don, pattern = "1_MO2"); b
[1] "1_MO2 crevettes po2crit.Rda" "1_MO2 soles Sète sda.Rda"     "1_MO2 turbots 
po2crit.Rda"

b2 = gsub(" Sète", "S",  b); b2
[1] "1_MO2 crevettes po2crit.Rda" "1_MO2 soles Sète sda.Rda"     "1_MO2 turbots 
po2crit.Rda"

I am puzzled and also "stuck". For now I'll modify the file name, but I need to 
be able to handle such names at some point.

Any advice?


Possibly your system really is using MacRoman or some other local encoding; in that case, iconv(x, "", "UTF-8") should convert from the local encoding to UTF-8.

I think declaring everything to be UTF8 may be sufficient. When I use list.files(), I see the encoding listed as "unknown", but

x <- list.files()
Encoding(x) <- "UTF-8"

works.  However, the iconv() method should be safer.

Duncan Murdoch

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to