[R] About 5.1 Arrays
Stephen Liu
satimis at yahoo.com
Mon Nov 8 10:31:09 CET 2010
Hi Joshua,
> .........You can think of a 3d array
> kind of like a journal (I don't know if this is helpful, but I kind of
> like the analogy so...). Each page holds a two dimensional table, so
> I could tell you to look at row 4, column 3 on page 16. Nevertheless,
> at any given point, it is just a flat page.
A good example. It can be regarded as a book with multiple pages. Each page
holds a table of 2 dimensions.
> No, it is correct. You cannot assume that you may use the same
> indices to access an array when you have created it with different
> dimensions. Consider:
>> array(1:24, dim = c(3, 4, 2))[1, 2, 1]
> [1] 4
>> array(1:24, dim = c(1, 2, 1))[1, 2, 1]
> [1] 2
I understand now, e.g.
> array(1:24, dim = c(3, 4, 2))[2,3,2]
[1] 20
Not
> array(1:24, dim = c(2, 3, 2))[2,3,2]
[1] 12
Lot of thanks for your advice and effort.
B.R.
Stephen L
----- Original Message ----
From: Joshua Wiley <jwiley.psych at gmail.com>
To: Stephen Liu <satimis at yahoo.com>
Cc: r-help at r-project.org
Sent: Mon, November 8, 2010 8:33:50 AM
Subject: Re: [R] About 5.1 Arrays
On Sat, Nov 6, 2010 at 7:38 AM, Stephen Liu <satimis at yahoo.com> wrote:
> Hi Joshua,
>
> Thanks for your advice.
>
> 1)
> Re your advice:-[quote]
>> a3d
> , , 1 <--- this is the first position of the third dimension ***THIS IS THE
>THIRD DIMENSION***
>
> [,1] [,2] [,3] [,4] <--- positions 1, 2, 3, 4 of the second dimension
> [1,] 1 4 7 10
> [2,] 2 5 8 11
> [3,] 3 6 9 12
> ^ the first dimension
>
> , , 2 <--- the second position of the third dimension ***THIS IS THE THIRD
>DIMENSION***
> ...
> [/quote]
>
> Where is the third dimension?
I pointed to the third dimension above. You can think of a 3d array
kind of like a journal (I don't know if this is helpful, but I kind of
like the analogy so...). Each page holds a two dimensional table, so
I could tell you to look at row 4, column 3 on page 16. Nevertheless,
at any given point, it is just a flat page.
>
> 2)
> Re your advice:-[quote]
> so you can think that in the original vector "a":
> 1 maps to a[1, 1, 1] in the 3d array
> 2 maps to a[2, 1, 1].
> 3 maps to a[3, 1, 1]
> 4 maps to a[1, 2, 1]
> 12 maps to a[3, 4, 1]
> 20 maps to a[2, 3, 2]
> 24 maps to a[3, 4, 2]
> [/quote]
>
> My finding;
>
> # 1 maps to a[1, 1, 1] in the 3d array
>> a3d <- array(a, dim = c(1, 1, 1))
>> a3d
> , , 1
>
> [,1]
> [1,] 1
>
> Correct
>
> # 2 maps to a[2, 1, 1].
>> a3d <- array(a, dim = c(2, 1, 1))
>> a3d
> , , 1
>
> [,1]
> [1,] 1
> [2,] 2
>
> Correct
>
> # 3 maps to a[3, 1, 1]
>> a3d <- array(a, dim = c(3, 1, 1))
>> a3d
> , , 1
>
> [,1]
> [1,] 1
> [2,] 2
> [3,] 3
>
> Correct
>
> # 4 maps to a[1, 2, 1]
>> a3d <- array(a, dim = c(1, 2, 1))
>> a3d
> , , 1
>
> [,1] [,2]
> [1,] 1 2
>
> Incorrect. It is "2"
No, it is correct. You cannot assume that you may use the same
indices to access an array when you have created it with different
dimensions. Consider:
> array(1:24, dim = c(3, 4, 2))[1, 2, 1]
[1] 4
> array(1:24, dim = c(1, 2, 1))[1, 2, 1]
[1] 2
>
>
> # 12 maps to a[3, 4, 1]
>> a3d <- array(a, dim = c(3, 4, 1))
>> a3d
> , , 1
>
> [,1] [,2] [,3] [,4]
> [1,] 1 4 7 10
> [2,] 2 5 8 11
> [3,] 3 6 9 12
>
> Correct
>
> # 20 maps to a[2, 3, 2]
>> a3d <- array(a, dim = c(2, 3, 2))
>> a3d
> , , 1
>
> [,1] [,2] [,3]
> [1,] 1 3 5
> [2,] 2 4 6
>
> , , 2
>
> [,1] [,2] [,3]
> [1,] 7 9 11
> [2,] 8 10 12
>
> Incorrect. It is "12"
See my above comment about not expecting things in the same location
when you change the space they live in.
Sorry this was so slow in coming, I missed the email somehow.
Cheers,
Josh
[snip]
More information about the R-help
mailing list