[R] Multidimensional array

David Winsemius dwinsemius at comcast.net
Tue Dec 29 00:38:19 CET 2015


> On Dec 28, 2015, at 1:10 PM, veni arakelian <veniarakelian at yahoo.com> wrote:
> 
> Dear David
> 
> The first three arrays are of the form
> val(:,:,1) =
> 
>      1     1     1
>      1     1     1
>      1     1     1
> 
> 
> val(:,:,2) =
> 
>      1     0     0
>      0     1     1
>      0     1     1
> 
> 
> val(:,:,3) =
> 
>      1     0     0
>      0     1     1
>      0     1     1
> 
> So I plan to import them in R as a single time series (i.e., 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 1 1) and 'reshape' it in the form val[ , , t]. 

I do not think you have demonstrated great powers of reading comprehension. I asked that you post the file as it would appear when viewed in a text editor. I also asked that you post in HTML, and it does not appear that you did that either. Please read the Posting Guide and do whatever self-study is needed so that you can configure your email client to post in plain text.

I'm going to make the assumption that the file looks like:

1     1     1
1     1     1
1     1     1
1     0     0
0     1     1
0     1     1
1     0     0
0     1     1
0     1     1

We can make a text/character representation of such a file for demonstration purposes:

txt <- "1     1     1
1     1     1
1     1     1
1     0     0
0     1     1
0     1     1
1     0     0
0     1     1
0     1     1"


The `scan` function can read from either character vectors or from files. The matrix function has a byrow argument whose default os FALSE but I think we need to set it to TRUE.

a <- matrix( scan(text=txt), ncol=3, byrow=TRUE) 

So now we have a 9 x 3 matrix and need to stratify into 3 3x3 matrices within an array-classed object. Simply using `array( a, c(3,3,3) )` will not succeed. However, one can reshape that value into the desired object with `aperm`

 aperm( array(a, c(3,3,3) ) , c(1,3,2) )

#   -- result --------
, , 1

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

, , 2

     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    1
[3,]    0    1    1

, , 3

     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    1
[3,]    0    1    1



-- David.




> 
> If there is another way more efficient, please let me know.
> 
> Kind regards,
> Veni
> 
> From: David Winsemius <dwinsemius at comcast.net>
> To: veni arakelian <veniarakelian at yahoo.com> 
> Cc: "r-help at r-project.org" <r-help at r-project.org>
> Sent: Monday, December 28, 2015 9:24 PM
> Subject: Re: [R] Multidimensional array
> 
> 
> > On Dec 27, 2015, at 11:49 PM, veni arakelian via R-help <r-help at r-project.org> wrote:
> > 
> > 
> > 
> > Hi All.
> > 
> > I'm very new in R. I'd like to import data of the form MxMxT, i.e., MxM array in T distinct points.
> > Any ideas how to do that?
> 
> It will depend on the form in which this data is represented as a file object. Can you show the appearance of the first two or three MxM items as they would be viewed in a text editor. And PLEASE post in plain text.
> 
> 
> > Regards,
> > Veni 
> > 
> > 
> >     [[alternative HTML version deleted]]
> 
> Postin in HTML is generally a sign that you have not read the posting-guide page.
> 
> > 
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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.
> 
> 
> David Winsemius
> Alameda, CA, USA
> 
> 
> 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list