En travaillant dans un langue autre que l’anglais, on est souvent amené à fréquenter des caractères exotiques : lettres munies d’accents (é), tildes (ñ), ronds (Å) et autres barres (ø) – sans compter les formes non-latines (de ∆ à भैं, en passant par ش). Mais comme l’informatique moderne a été développée avec des claviers étas-uniens, leur traitement ne va pas sans difficultés.
Des procédures standardisées, dites d’encodage, permettent d’utiliser ces caractères dans des textes ou des bases de données. Toutefois, dans le cas du français, le plus simple est bien souvent d’enlever les accents, si bien sûr on ne perd pas d’information cruciale au passage.
R permet d’effectuer cette opération, grâce à la fonction iconv
munie d’une option de translittération : é
est ainsi transformé en ´e
, par exemple. On enlève ensuite les apostrophes (et équivalents) pour compléter la procédure de désaccentuation. Pour le faire de manière systématique, on définit la fonction suivante:
Unaccent <- function(text) {
text <- gsub("['`^~\"]", " ", text)
text <- iconv(text, to="ASCII//TRANSLIT//IGNORE")
text <- gsub("['`^~\"]", "", text)
return(text)
}
Il suffit d’exécuter ces quelques lignes au début d’un script R et cette fonction Unaccent
devient disponible pour toute la suite de votre programme. Trois remarques:
- Elle ne fonctionne que pour les caractères latins.
- Les apostrophes et guillemets anglais sont également évacués, et remplacés par des espaces.
- Vous venez de créer une fonction en R, un outil très utile qui permet d’empaqueter un ensemble d’instructions (éventuellement long) plutôt que de les réécrire à chaque fois.
Son utilisation donne ainsi :
> Unaccent("à é î ø ü ç ß ñ ƒ")
[1] "a e i o u c ss n f"
> Unaccent("J'ai dévoré les Grundriße")
[1] J ai devore les Grundrisse
Attention, les caractères non-latins sont purement et simplement effacés :
> Unaccent("∆")
[1] ""
Il est possible de travailler en gardant l’ensemble des caractères et des accents, mais cela nécessite d’être extrêmement soigneux dans la manipulation des encodages, voire des expressions régulières. Ces sujets, très techniques, seront abordés prochainement. Mais si vous pouvez y échapper, profitez-en !