I have a data frame that relates bottle numbers to their volumes (key in the example below). I want to write a function that will take any list of bottle numbers (samp) and return a list of the bottle volumes while maintaining the bottle number order in samp.
The function below correctly matches the bottle numbers and volumes but sorts the output by ascending bottle number.
How can I maintain the order of samp with merge? Setting sort=FALSE results in an "unspecified order".
Example
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)
}