R 3d阵列到2d矩阵

Nem*_*esi 6 arrays r matrix

让我们假设我有一个3d维数组(x,y,z),并希望将我的数据重组为维度矩阵(x*y,z),如:

my_array <- array(1:600, dim=c(10,5,12))
my_matrix<-data.frame()

for (j in 1:5) {
  for (i in 1:10) {
     my_matrix <- rbind (my_matrix, my_array[i,j,1:12])
 }
}
Run Code Online (Sandbox Code Playgroud)

你能建议一种更快更优雅的方式吗?

谢谢

Lar*_*ger 9

更改数组的维度:

dim(my_array) <- c(10 * 5 , 12)
Run Code Online (Sandbox Code Playgroud)

  • 嗨,内梅西。我测试了该解决方案,结果与您最初获得的结果相同。请注意,数组是具有维度属性的向量,这就是这个简单解决方案起作用的原因。 (2认同)

akr*_*run 8

我们可以matrix通过调用matrix和指定维度来转换为a

res <- matrix(my_array, prod(dim(my_array)[1:2]), dim(my_array)[3])
all.equal(as.matrix(my_matrix), res, check.attributes=FALSE)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

注意:这不会更改原始的'my_array`.而且,事实上,代码可以简化为

matrix(my_array, 10*5, 12)
Run Code Online (Sandbox Code Playgroud)

并使其紧凑.

nchar("matrix(my_array, 10*5, 12)")
#[1] 26

nchar("dim(my_array) <- c(10 * 5 , 12)")
#[1] 31
Run Code Online (Sandbox Code Playgroud)