[R] Convert 2-dim array to 3-dim array

arun smartpink111 at yahoo.com
Mon Jun 4 18:54:55 CEST 2012


Hi Dave,

I tested the "as.array".  It gives a different dimension when compared to "array"

set.seed(1)
datE<-data.frame(A=rnorm(30,0.5))
myArr=as.array(unlist(datE),dim=c(5,2,3))
> myArr
         A1          A2          A3          A4          A5          A6 
-0.12645381  0.68364332 -0.33562861  2.09528080  0.82950777 -0.32046838 
         A7          A8          A9         A10         A11         A12 
 0.98742905  1.23832471  1.07578135  0.19461161  2.01178117  0.88984324 
        A13         A14         A15         A16         A17         A18 
-0.12124058 -1.71469989  1.62493092  0.45506639  0.48380974  1.44383621 
        A19         A20         A21         A22         A23         A24 
 1.32122120  1.09390132  1.41897737  1.28213630  0.57456498 -1.48935170 
        A25         A26         A27         A28         A29         A30 
 1.11982575  0.44387126  0.34420449 -0.97075238  0.02184994  0.91794156 
> is.array(myArr)
[1] TRUE
> dim(myArr)
[1] 30


> myArr1=array(unlist(datE),dim=c(5,2,3))
> myArr1
, , 1

           [,1]       [,2]
[1,] -0.1264538 -0.3204684
[2,]  0.6836433  0.9874291
[3,] -0.3356286  1.2383247
[4,]  2.0952808  1.0757814
[5,]  0.8295078  0.1946116

, , 2

           [,1]      [,2]
[1,]  2.0117812 0.4550664
[2,]  0.8898432 0.4838097
[3,] -0.1212406 1.4438362
[4,] -1.7146999 1.3212212
[5,]  1.6249309 1.0939013

, , 3

          [,1]        [,2]
[1,]  1.418977  0.44387126
[2,]  1.282136  0.34420449
[3,]  0.574565 -0.97075238
[4,] -1.489352  0.02184994
[5,]  1.119826  0.91794156

> dim(myArr1)
[1] 5 2 3


A.K.




----- Original Message -----
From: David Winsemius <dwinsemius at comcast.net>
To: David Zastrau <davidz at tzi.de>
Cc: r-help at r-project.org
Sent: Monday, June 4, 2012 10:45 AM
Subject: Re: [R] Convert 2-dim array to 3-dim array


On Jun 4, 2012, at 5:08 AM, David Zastrau wrote:

> Hello R-users,
> 
> I'd like to load data from a CSV-file to a 3-dimensional array. However
> the default seems to be 2-dimensional.

No.  that is not the problem.
> It would also be ok to load the
> data and then convert it to a 3-dimensional structure.
> 
> I've been trying:
> 
>   dat = read.csv(filename)
>   myArr = as.array(dat, dim = c(12,100,3))
> 
> However, I get an error message:
> 
> Error in `dimnames<-.data.frame`(`*tmp*`, value = list(n)) :
> invalid 'dimnames' given for data frame

A dataframe is a list structure while both array and matrix are expecting the first argument to be an atomic vector. Try this (although it is a blind guess because you have not provided the structure of 'dat'

myArr = as.array( unlist(dat), dim = c(12,100,3))

--David.

> 
> 
> And I don't know how how to set the dimnames.
> 
> I would appreciate any help!
> 
> Best Wishes
> Dave
> 
>     [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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, MD
West Hartford, CT

______________________________________________
R-help at r-project.org mailing list
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.




More information about the R-help mailing list