Skip to content
Back to formatted view

Raw Message

Message-ID: <4E36BD4B.9010304@gmail.com>
Date: 2011-08-01T14:50:51Z
From: Duncan Murdoch
Subject: General indexing in multidimensional arrays
In-Reply-To: <4E3673FD.5030800@yahoo.de>

On 11-08-01 5:38 AM, Jannis wrote:
> Dear R community,
>
>
> I have a general question regarding indexing in multidiemensional arrays.
>
> Imagine I have a three dimensional array and I only want to extract on
> vector along a single dimension from it:
>
>
> data<- array(rnorm(64),dim=c(4,4,4))
>
> result<- data[1,1,]
>
> If I want to extract more than one of these vectors, it would now really
> help me to supply a logical matrix of the size of the first two dimensions:
>
>
> indices<- matrix(FALSE,ncol=4,nrow=4)
> indices[1,3]<- TRUE
> indices[4,1]<- TRUE
>
> result<- data[indices,]
>
> This, however would give me an error. I am used to this kind of indexing
> from Matlab and was wonderingt whether there exists an easy way to do
> this in R without supplying complicated index matrices of all three
> dimensions or logical vectors of the size of the whole matrix?
>
> The only way I could imagine would be to:
>
> result<- data[rep(as.vector(indices),times=4)]
>
> but this seems rather complicated and also depends on the order of the
> dimensions I want to extract.
>
>
> I do not want R to copy Matlabs behaviour, I am just wondering whether I
> missed one concept of indexing in R?
>

Base R doesn't have anything like that as far as I know.  The closest is 
matrix indexing: you construct a 3 column matrix whose rows are the 
indices of each element you want to extract.

Possibly plyr or some other package has functions to do this.

Duncan Murdoch