2014-04-27 112 views
2

我想根据订单排列一个列表,并在另一个列表中排列结果。 例如,给定值(数字)的列表char和列表mini,我可以得到有序字符列表:根据r中的数字列表顺序对字符列表进行排序

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

我想使用安排/订单,将基于提升min列表

排序 char列表

(我想要上升字母字符当迷你值是相同的)。

对此提出建议?

编辑:虚拟例如

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" 
+3

这个问题真的会从[最小的可重复的例子]受益( http://stackoverflow.com/questions/5963269/how-to-make-一个伟大-R-重复性,例如)! –

+0

@Josh O'Brien请参阅编辑。 – Makaroni

+0

谢谢,那会好很多。我编辑了一下,使它更容易重现。 –

回答

4

试试这个:

Map(function(x, y) y[order(x, y)], mini, char) 
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" 
相关问题