2017-07-19 1 views
2

Je souhaite modifier une liste l basée sur une trame de données de cartographie mappingModifier la liste basée sur une trame de données de cartographie

mapping = data.frame(german=c("Hund", "Katze", "Vogel", "Schwein"), 
        english=c("dog", "cat", "bird", "pig")) 

l = c("Katze", "Schwein", "Kuh", "Hund", "Vogel") 

Mon résultat souhaité ressemblerait à ceci

l = c("cat", "pig", NA, "dog", "bird") 

Il est nécessaire que la commande au l sera conservée. De plus, le temps de calcul doit être réduit au minimum puisque l compte environ 20 000 éléments.

Quelqu'un a une idée de comment résoudre ce problème?

Merci à l'avance,

Christian

Répondre

4

Nous pouvons utiliser match

with(mapping, as.character(english)[match(l, german)]) 
#[1] "cat" "pig" NA  "dog" "bird"