2014-04-27 3 views
0

lapply를 사용하여 목록의 최소값에 대한 색인을 가져오고 싶습니다.lapply를 사용하여 목록의 최소값을 얻으십시오

> min 
    $A 
    [1] 15.4 15.9 16.4 14.5 17.1 .... and so on 

    $B 
    [1] 18.3 14.9 15.3 

나는이 목록 정렬 할 수 있습니다 lapply 사용 : : 지금 min2의 결과를 바탕으로 최소의 인덱스를 얻을 수있는 방법

> min2<-lapply(min, sort) 
$A [1] 14.4 14.5 14.5 14.5 14.6 ... and so on 
$B [1] 14.9 15.3 18.3 

나는 목록 분 있나요?

+2

. 'sapply (min, order)'를 시도해보십시오. – jbaums

+0

@jbaums 감사합니다. 잘 작동합니다! 이 결과를 문자가있는 다른 목록에 적용하도록 도와 주시겠습니까? – Makaroni

+1

'ch'의 각 요소가'min'의 해당 요소와 같은 길이 인 문자 목록'ch'가 주어지면 다음과 같은 트릭을 수행해야합니다 :'mapply (function (x, y) y [x], lapply (분, 주문), 채널)' – jbaums

답변

1

mapply

x <- list(a = rnorm(5), 
      b = rnorm(5)) 
# $a 
# [1] -0.05417899 -0.28140108 -0.51207379 0.73572854 1.24535765 
# 
# $b 
# [1] 1.1580326 0.7900556 0.9595224 -1.2232270 0.6621114 

y <- lapply(x, sort) 

# $a 
# [1] -0.51207379 -0.28140108 -0.05417899 0.73572854 1.24535765 
# 
# $b 
# [1] -1.2232270 0.6621114 0.7900556 0.9595224 1.1580326 

mapply(match, y, x) 
#  a b 
# [1,] 3 4 
# [2,] 2 5 
# [3,] 1 2 
# [4,] 4 3 
# [5,] 5 1 

match 편집 :

당신은`order`가 아닌`sort`을 찾고있는 것 같습니다
z <- as.matrix(mapply(match, y, x)) 
#  a b 
# [1,] 3 4 
# [2,] 2 5 
# [3,] 1 2 
# [4,] 4 3 
# [5,] 5 1 

zz <- LETTERS[1:5] 

matrix(zz[z], ncol = 2) 

    [,1] [,2] 
[1,] "C" "D" 
[2,] "B" "E" 
[3,] "A" "B" 
[4,] "D" "C" 
[5,] "E" "A" 
+0

감사합니다. 작동합니다! 그리고 mapply (match, x, y) 결과에 해당하는 문자를 포함하는 min3 목록에 얻어진 색인을 적용하고 싶다면? – Makaroni

+0

모르겠다. 위의 편집을 참조하십시오. @Makaroni – rawr

+0

나는 그것을 더 잘 설명하려고 노력할 것이다. 문자 개체 $ A "aa" "bb" "cc"와 $ B "gg" "dd" "ee"가 포함 된 min3 목록이 있다고 가정합니다. 이제 mapply (match()) 메서드를 사용하여 얻은 결과에 따라이 목록을 정렬하려고합니다. – Makaroni

관련 문제