让我们假设我有一个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)
你能建议一种更快更优雅的方式吗?
谢谢
更改数组的维度:
dim(my_array) <- c(10 * 5 , 12)
Run Code Online (Sandbox Code Playgroud)
我们可以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)