[R] matrix element position: from length to dim

Petr Savicky savicky at cs.cas.cz
Thu Feb 2 14:25:58 CET 2012


On Thu, Feb 02, 2012 at 02:08:37PM +0100, Ana wrote:
> How can I pass from position in length inside a matrix to position in dim ?
> 
> 
> a=matrix(c(1:999),nrow=9)
> 
> which(a==87)    #position in length 1:length(a)
> 87
> 
> which(a==87,arr.ind=TRUE)   #position in dim
>      row col
> [1,]   6  10

Hi.

Assume

   d <- dim(a)
   i <- 87

Try the following two approaches.

1.

   x <- rep(FALSE, times=prod(d))
   x[i] <- TRUE
   which(array(x, dim=d), arr.ind=TRUE)

       row col
  [1,]   6  10

2.

  c((i - 1) %% d[1], (i - 1) %/% d[1]) + 1

  [1]  6 10

Hope this helps.

Petr Savicky.



More information about the R-help mailing list