Skip to content
Back to formatted view

Raw Message

Message-ID: <20120202132558.GC25170@cs.cas.cz>
Date: 2012-02-02T13:25:58Z
From: Petr Savicky
Subject: matrix element position: from length to dim
In-Reply-To: <CAErHZW21qW6M=shiGEKX-3A0bOiq3Yzi1Z2UkowaAkdHYJ24tw@mail.gmail.com>

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.