我有一些数据:
dd <- data.frame(cbind(c("A", "A", "B"), c("F", "E", "D"), c(1, 2, 3)))
names(dd) <- c("colA", "colB", "colC")
Run Code Online (Sandbox Code Playgroud)
我有一个查找框架lk
lk <- data.frame(rbind(c("colA", "colC"), c("colB", "colC")))
names(lk) <- c("srt_col", "srt_metric")
Run Code Online (Sandbox Code Playgroud)
而我想要做的是按查询框架中指定的列对数据进行排序.
就像是:
dd[ order(lk[, 1]), ]
Run Code Online (Sandbox Code Playgroud)
哪个应该给出一个输出
output data (roughly, you get the idea I hope)
A E 2
A F 1
B D 3
Run Code Online (Sandbox Code Playgroud)
但我似乎无法获得正确的语法,我觉得我在这里遗漏了一些明显的东西.有人可以帮忙吗?
这是对它的抨击.
dd[do.call(order, dd[as.character(lk[, 1])]), ]
Run Code Online (Sandbox Code Playgroud)
这as.character是为了避免任何可能的factor恶作剧.