On 10-12-27 5:26 PM, Eduardo de Oliveira Horta wrote:
Hello there

I wish to get the "coordinates" of the minimum element of an array.

For example, if the array were

H = array(c(8:5,1:4),dim=c(2,2,2))
H
, , 1

      [,1] [,2]
[1,]    8    6
[2,]    7    5

, , 2

      [,1] [,2]
[1,]    1    3
[2,]    2    4

then
min(H)
[1] 1

and
max(H)
[1] 8

Say "idx" were the function I'm looking for. Then, what I'm expecting is

idx(min(H))
[1] 1 1 2
idx(max(H))
[1] 1 1 1

I don't know if anyone has written a function with the exact output you want, but you can get the vector index using which.min() and which.max(). Converting that to a vector index is simply a matter of some modular arithmetic. Here's a quick ugly version:

vector.which.min <- function(H) {
  d <- dim(H)
  i <- which.min(H) - 1
  result <- c()
  for (j in seq_along(d)) {
          result <- c(result, i %% d[j])
          i <- i %/% d[j]
  }
  result + 1
 }

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to