Ich möchte Nicht-ASCII-Zeichen (vorerst nur Spanisch) durch ihre ASCII-Entsprechung ersetzen. Wenn ich "á" habe, möchte ich es durch "a" ersetzen und so weiter.Ersetzen Sie Nicht-Ascii-Zeichen durch eine definierte String-Liste ohne eine Schleife in R
Ich habe diese Funktion (funktioniert gut), aber ich möchte keine Schleife verwenden (einschließlich interner Schleifen wie Sapply).
latin2ascii<-function(x) {
if(!is.character(x)) stop ("input must be a character object")
require(stringr)
mapL<-c("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","ü","Ü")
mapA<-c("a","e","i","o","u","A","E","I","O","U","n","N","u","U")
for(y in 1:length(mapL)) {
x<-str_replace_all(x,mapL[y],mapA[y])
}
x
}
Gibt es einen eleganten Weg, es zu lösen? Jede Hilfe, Anregung oder Modifikation wird geschätzt
Vielen Dank! funktioniert perfekt. Nur eine Frage (nur zu wissen); Weißt du, ob die Funktion gsubfn irgendeine Art von interner Schleife verwendet? Sollte schneller sein als sapply? –
@ Álvaro - Ich glaube nicht, 'gsubfn()' ist besonders schnell - 'einfach' bequem und elegant. –
Siehe auch 'chartr' in der Basis von R, was für das angegebene Problem in Ordnung scheint. Wenn es jedoch Variationen im realen Problem gibt, wie zum Beispiel das Ersetzen von zwei Zeichenfolgen, könnte 'gsubfn' noch damit umgehen, aber nicht' chartr'. –