2014-04-27 2 views
2

다른 목록의 결과를 정렬 기준으로 정렬하고 싶습니다. 예를 들어 , 값 (숫자)의 목록 char 및 목록 mini을 주어, 나는 정렬 된 문자 목록을 얻을 수 있습니다 : 나는 min 목록숫자 목록의 순서에 따라 문자 목록을 오름차순으로 정렬

오름차순에 따라 char 목록을 정렬합니다/순서를 정렬 사용할

sorted<-mapply(function(x, y) y[x], lapply(mini, order), 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- a-great-r-reproducible-example)! –

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