根据r中数字列表的顺序,按升序对字符列表进行排序

时间:2014-04-27 23:20:34

标签: r sorting plyr lapply

我想在另一个列表中排列包含基于订单/排列结果的字符的列表。 例如,给定列表char和值列表(数字)mini,我可以获得排序的char列表:

sorted<-mapply(function(x, y) y[x], lapply(mini, order), char)

我想使用排序/订单,根据升序char列表排序min列表

(当mini中的值相同时,我希望上升字母字符)。

建议?

编辑:虚拟示例

char <- list(A=c("dd", "aa", "cc", "ff"), B=c("rr", "ee", "tt", "aa"))
mini <- list(A=c(4,2,4,4), B=c(5,5,7,1))

char
$A
"dd" "aa" "cc" "ff" ...
$B
"rr" "ee" "tt" "aa" ...

mini
$A
4 2 4 4 ...
$B
5 5 7 1 ...

预期结果:

sorted
$A
"aa" "cc" "dd" "ff"
$B
"aa" "ee" "rr" "tt"

2 个答案:

答案 0 :(得分:4)

试试这个:

Map(function(x, y) y[order(x, y)], mini, char)

答案 1 :(得分:1)

lapply( names(char), function(nm) char[[nm]][order(mini[[nm]], char[[nm]])])
#------
[[1]]
[1] "aa" "cc" "dd" "ff"

[[2]]
[1] "aa" "ee" "rr" "tt"