如何合并和维护一个输入的行顺序?

DQd*_*dlM 6 sorting merge r dataframe

我有一个数据框,将瓶号与其卷相关联(key在下面的示例中).我想编写一个函数,它将获取瓶号(samp)的任何列表,并返回瓶容量列表,同时保持瓶号顺序samp.

以下功能正确匹配瓶号和体积,但按瓶号上升对输出进行排序.

我怎样才能保持sampmerge?的顺序?设置sort=FALSE结果为"未指定的顺序".

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)
  }
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 4

您可以使用结果进行match子集化:key

bottles <- key[match(samp, key$num),]
# rownames are odd because they must be unique, clean them up
rownames(bottles) <- seq(NROW(bottles))
Run Code Online (Sandbox Code Playgroud)