2014-04-27 149 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" 
相關問題