user87205
user87205

Reputation:

How to read multiple files into a multi-dimensional array

I want to make array in 3 dimension.

Here is what I tried:

z<-c(160,720,420)
first_data_set <-array(dim = length(file_1), dimnames = z)

Data that I am reading is in one level. (only x and y) There are other data in the same format, and I need to put them in the same array with the first data. So once I finish reading all data, all of them are in the same array but there is no overwriting.

So I think array has to be 3 dimensions; otherwise I cannot keep all data that I read in loop.

Upvotes: 3

Views: 1446

Answers (1)

David LeBauer
David LeBauer

Reputation: 31741

Say that you have two matrices of size 3x4:

m1 <- matrix(rnorm(12), nrow = 3, ncol = 4)
m2 <- matrix(rnorm(12), nrow = 3, ncol = 4)

If you want to place them in an array, first make an array of NA's:

A <- array(as.numeric(NA), dim = c(3,4,2))

Then populate the layers with data:

A[,,1] <- m1
A[,,2] <- m2

As suggested by @Justin, you could also just put the matrices together in a list:

A2 <- list()
A2[['m1']] <- m1
A2[['m2']] <- m2

To read matrices from files: using a list makes it easier to get these matrices from files in a directory, without having to specify the dimensions in advance. Assume you want all files with extension csv:

myfiles <- dir(pattern = ".csv")
for (i in 1:length(myfiles)){
   A2[[myfiles[i]]] <- read.table(myfiles[i], sep = ',')
}

Upvotes: 7

Related Questions