如何将多个文件读入多维数组

时间:2012-04-10 19:35:41

标签: arrays r

我想在三维中制作数组。

以下是我的尝试:

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

我正在阅读的数据是一个级别。 (只有x和y) 还有其他数据采用相同的格式,我需要将它们与第一个数据放在同一个数组中。所以一旦我读完所有数据,它们都在同一个数组中,但没有覆盖。

所以我认为数组必须是3维;否则我无法保留我在循环中读取的所有数据。

1 个答案:

答案 0 :(得分:7)

假设您有两个大小为3x4的矩阵:

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

如果你想把它们放在一个数组中,首先要创建一个NA的数组:

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

然后使用数据填充图层:

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

正如@Justin建议的那样,你也可以将矩阵放在一个列表中:

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

要从文件中读取矩阵:使用列表可以更轻松地从目录中的文件中获取这些矩阵,而无需事先指定维度。假设您想要所有扩展名为csv的文件:

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