ascending_sorting = function(vec){
    sort.rank = matrix(NA, nr = length(vec), nc = 2)
    
    for(i in 1:length(vec)){
        val = vec[i]
        rank = 1
        for(j in 1:length(vec)){
            if(val > vec[j]){
                rank = rank + 1
            } else {
                rank = rank
            }
        }
        sort.rank[i,] = c(val,rank)
    }
    sort.i = c()
    
    for(k in 1:length(vec)){
        sort.i = c(sort.i, sort.rank[sort.rank[, 2] == k, 1])
    }
    return(sort.i)
}

set.seed(100)
vec = runif(3, 0, 30)
ascending_sorting(vec)

 

코드를 이해하는 흐름

> 오름차순 정렬을 위한 함수를 설정한다.

> 그러기 위해서는 매개변수가 필요하다.

> 그 매개변수는 vector의 형태로 와야한다. 

> 오름차순을 단순히 최댓값과 최솟값을 비교하는 것처럼 하기에는 무리가 있다. 따라서 우리는 matrix를 하나 설정해서 각 값에 대하여 ranking을 매길 것이다.

> ranking을 매기기 위해서는 반복문을 2번 사용해야한다.

 >> 즉, 하나의 값에 대하여 vector 안에 존재하는 모든 값들과 비교를 하는 방식으로 말이다.

> 그러고 난 다음에는 NA값으로 지정한 matrix에 값을 넣는다.

> 넣고 난 후의 matrix의 값들에 대해서 오름차순을 지정하기 위해서는 

 >> sort.i = c(sort.i, sort.rank[sort.rank[, 2] == k, 1]) 이런 식으로 코드를 짜야한다.

 >> 그 이유는 sort.rank[sort.rank[,2] == k, 1] 가 값이 여러개이기 때문에 그 값에 대해서 sort.i를 넣는 것이다.

+ Recent posts