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를 넣는 것이다.
'프로그래밍 > R프로그래밍' 카테고리의 다른 글
R프로그래밍 - 중심극한정리 확인 (1) | 2023.12.04 |
---|---|
R프로그래밍 - simulation (0) | 2023.12.04 |
R프로그래밍 - 사용자 정의 함수 (1) | 2023.11.22 |
R프로그래밍 - 반복문 (1) | 2023.11.13 |
R프로그래밍 - 난수발생 (0) | 2023.11.13 |