通过在另一个数据框中命名的动态列集对R中的数据帧进行排序

mcp*_*son 1 r

我有一些数据:

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)

但我似乎无法获得正确的语法,我觉得我在这里遗漏了一些明显的东西.有人可以帮忙吗?

Hon*_*Ooi 6

这是对它的抨击.

dd[do.call(order, dd[as.character(lk[, 1])]), ]
Run Code Online (Sandbox Code Playgroud)

as.character是为了避免任何可能的factor恶作剧.