[R] About 5.1 Arrays

Stephen Liu satimis at yahoo.com
Fri Nov 5 15:56:36 CET 2010


Hi Steve,

> It's not clear what you're having problems understanding. By
> setting the "dim" attribute of your (1d) vector, you are changing 
> itsdimenensions.

I'm following An Introduction to R to learn R

On

5.1 Arrays
http://cran.r-project.org/doc/manuals/R-intro.html#Vectors-and-assignment


It mentions:-
...
For example if the dimension vector for an array, say a, is c(3,4,2) then there 
are 3 * 4 * 2 = 24 entries in a and the data vector holds them in the order 
a[1,1,1], a[2,1,1], ..., a[2,4,2], a[3,4,2]. 


I don't understand "on .... =24 entries in a and the data vector holds them in 
the order a[1,1,1], a[2,1,1], ..., a[2,4,2], a[3,4,2]."  the order a[1,1,1], 
a[2,1,1], ..., a[2,4,2], a[3,4,2]?  What does it mean "the order a[1,1,1], 
a[2,1,1], ..., a[2,4,2], a[3,4,2]"?

Thanks

B.R.
Stephen





----- Original Message ----
From: Steve Lianoglou <mailinglist.honeypot at gmail.com>
To: Stephen Liu <satimis at yahoo.com>
Cc: Gerrit Eichner <Gerrit.Eichner at math.uni-giessen.de>; r-help at r-project.org
Sent: Fri, November 5, 2010 10:18:18 PM
Subject: Re: [R] About 5.1 Arrays

Hi,

On Fri, Nov 5, 2010 at 6:00 AM, Stephen Liu <satimis at yahoo.com> wrote:
[snip]
>> A[i, j, k] is the value of the element in position (i,j,k) of array A. In
>> other words, it is the entry in row i, column j, and "layer" k (if one
>> wants to think of A as a cuboidal grid).
>
> Sorry I can't follow.  Could you pls explain in more detail.
>
> e.g.
>
>> z <- 0:23
>> dim(z) <- c(3,4,2)
>> dim(z)
> [1] 3 4 2
>
>
>> z
> , , 1
>
>     [,1] [,2] [,3] [,4]
> [1,]    0    3    6    9
> [2,]    1    4    7   10
> [3,]    2    5    8   11
>
> , , 2
>
>     [,1] [,2] [,3] [,4]
> [1,]   12   15   18   21
> [2,]   13   16   19   22
> [3,]   14   17   20   23

It's not clear what you're having problems understanding. By setting
the "dim" attribute of your (1d) vector, you are changing its
dimenensions.

## This is a 1d vector
R> x <- 1:12
R> x

## I can change it into 2d (like a matrix), let's do 2 rows, 6 columns
R> dim(x) <- c(2,6)
R>      [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    3    5    7    9   11
[2,]    2    4    6    8   10   12

If you understand that using three numbers to set the dimension means
you are making a 3d matrix

R> dim(x) <- c(2,3,2)

But the problem is you can't draw 3d in a terminal, so it just draws
the third dimension in order

R> x

x
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

###

Imagine this as a cube: ,,1 is the front layer, ,,2 is the back layer.

Just chew on it for a minute, it'll make sense.

-- 
Steve Lianoglou
Graduate Student: Computational Systems Biology
 | Memorial Sloan-Kettering Cancer Center
 | Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact






More information about the R-help mailing list