# [R] Convert two-dimensional array into a three-dimensional array.

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Sat Dec 9 00:51:04 CET 2023

```OK. I'm not getting what you want, so feel free to ignore this if you think
I've missed the point completely and don't want to waste your time. Won't
be my first time clueless.

A 3-D array can be  thought of as as a "pile" of 2-D flats, so a 10 x 2 x
10 array consists of 10 2-d flats, each 10 x 2. So tell me what you want
the first 10x2 flat to contain, then the second, etc.  Here is a print
representation of a 2 x 4 x 3 array that might help:

> array(1:24, dim = c(2,4,3))
, , 1

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

, , 2

[,1] [,2] [,3] [,4]
[1,]    9   11   13   15
[2,]   10   12   14   16

, , 3

[,1] [,2] [,3] [,4]
[1,]   17   19   21   23
[2,]   18   20   22   24

FWIW, it sounds to me like you just do something like:

> dval <- matrix(1:8, nrow = 2)
> dval
[,1] [,2] [,3] [,4]
[1,]    1    3    5    7
[2,]    2    4    6    8
> ar <- array(dval, dim = c(2,4,3))
> ar
, , 1

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

, , 2

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

, , 3

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

since the 3rd array index itself provides the values you refer to. But this
doesn't make sense to me, so I've probably misinterpreted.

Cheers,
Bert

On Fri, Dec 8, 2023 at 2:58 PM Sorkin, John <jsorkin using som.umaryland.edu>
wrote:

> Colleagues
>
> I want to convert a 10x2 array:
> # create a 10x2 matrix.
> datavals <- matrix(nrow=10,ncol=2)
> datavals[,] <- rep(c(1,2),10)+c(rnorm(10),rnorm(10))
> datavals
>
> into a 10x3 array, ThreeDArray, dim(10,2,10).
>
> The values storede in  ThreeDArray's first dimensions will be the data
> stored in datavalues.
> ThreeDArray[i,,] <- datavals[i,]
>
> The values storede in  ThreeDArray's second dimensions will be the data
> stored in datavalues.
> ThreeDArray[,j,] <- datavals[,j]
>
> The data stored in ThreeDArray[,,1] will be 1,
> The data stored in ThreeDArray[,,2] will be 2.
>  . . .
> The data stored in ThreeDArray[,,10] will be 10.
>
> I have no idea how to code the coversion of the 10x2 matrix into a 10,2,10
> array.
> I may be able to acomplish my mission by coding each line of the plan
> described above,
> but there has to be a more efficient and elegant way to accompish my goal.
>
> Many thanks for your help!
> John
>
>
>
>
> John David Sorkin M.D., Ph.D.
> Professor of Medicine, University of Maryland School of Medicine;
>
> Associate Director for Biostatistics and Informatics, Baltimore VA Medical
> Center Geriatrics Research, Education, and Clinical Center;
>
> PI Biostatistics and Informatics Core, University of Maryland School of
> Medicine Claude D. Pepper Older Americans Independence Center;
>
> Senior Statistician University of Maryland Center for Vascular Research;
>
> Division of Gerontology and Paliative Care,
> 10 North Greene Street
> GRECC (BT/18/GR)
> Baltimore, MD 21201-1524
> Cell phone 443-418-5382
>
>
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help