如何在R中从高维数组创建低维矩阵?

4
假设我有一个数组,如下所示:
temp<-array(0, dim=c(100,10,4))

我可以使用cbind将数组中的矩阵1和2合并成一个单独的矩阵:

temp.merge<-cbind(temp[,,1],temp[,,2])

有没有一种方法可以将所有n个矩阵(在这种情况下为4个)合并成一个单独的矩阵,而不必像上面那样写出每个矩阵的位置?
3个回答

5
如果您在内存中正确设置了数组,只需重置维度即可使其正常工作。
dim(temp) <- c(100, 40)

0
如果@Neal的答案有效,一定要使用它。
这个也可以:
# generates 100 X 40 array
do.call("cbind",lapply(1:4,function(x){return(temp[,,x])}))

你会认为:

do.call("cbind",list(temp[,,1:4]))    ## generates 4000 X 1 array

看起来可以工作,但实际上并没有...


0

另外:

as.matrix(as.data.frame(temp))

例子:

> temp <- array(1:8, dim=c(2,2,2))
> temp
#, , 1
# 
#     [,1] [,2]
#[1,]    1    3
#[2,]    2    4
#
#, , 2
# 
#     [,1] [,2]
#[1,]    5    7
#[2,]    6    8


as.matrix(as.data.frame(temp))

#     V1 V2 V3 V4
#[1,]  1  3  5  7
#[2,]  2  4  6  8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接