Мне нужно ранжировать значения массива по третьему топору. У меня есть такой массив:
a <- array(c(1:9,11:19,21:29),dim = c(3,3,3))
Ожидаемый результат - это матрица с рангом первого, которую я ожидал вычислить следующим образом: apply(X = a, MARGIN = c(1,2), FUN = rank)[, ,1]
# expected result because a[,,1] is the minimal value of my array
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
Однако функция apply
возвращает мне другой массив, что странно, потому что она возвращает матрицу, когда я использую другие функции, такие как mean
, max
или sort
.
Я проверил apply(a, c(1,2), print)
, и он печатает вектор, который меня интересует в ранжировании (например, на первой итерации выведите 1 11 21
).
Я могу закодировать это с помощью for-l oop, но, по крайней мере, мне интересно, что именно является проблемой в данном случае.
# The for loop to obtain the good result
a2 <- a[,,1]
for(i in seq(dim(a)[1])){
for(j in seq(dim(a)[2])){
a2[i,j] <- rank(a[i,j,])[1]
}
}
Заранее спасибо!