J'ai un tableau de données qui relie les numéros de bouteilles à leurs volumes (clé
dans l'exemple ci-dessous). Je veux écrire une fonction qui prendra n'importe quelle liste de numéros de bouteilles (samp
) et renverra une liste des volumes de bouteilles tout en maintenant l'ordre des numéros de bouteilles dans samp
.
La fonction ci-dessous associe correctement les numéros de bouteilles et les volumes, mais trie la sortie par numéro de bouteille croissant.
Comment puis-je maintenir l'ordre de samp
avec merge
? Définir sort=FALSE
entraîne un "ordre non spécifié".
Exemple
samp <- c(9, 1, 4, 1)
num <- 1:10
vol <- sample(50:100, 10)
key <- data.frame(num, vol)
matchFun <- function(samp, key)
{
out <- merge(as.data.frame(samp), key, by.x="samp", by.y="num")
return(out$vol)
}