这个问题在这里已经有了答案:
Convert a matrix to a 1 dimensional array
(11 个回答)
4年前关闭。
我有一个 1000 x 1000 的大型 2D 矩阵。我想对其进行整形,使其成为一列(或一行)。例如,如果矩阵是:
A B C
1 4 7
2 5 8
3 6 9
我想把它变成:
1 2 3 4 5 6 7 8 9
我不需要保留列标题,只需要保留数据的顺序。我如何使用
reshape2
执行此操作(我认为哪个包最容易使用)?为了澄清,我提到了
reshape
因为我认为这是最好的方法。我可以看到有一些更简单的方法让我非常满意。
最佳答案
我认为很难找到比以下更紧凑的方法:
c(m)
[1] 1 2 3 4 5 6 7 8 9
但是,如果您想保留矩阵结构,那么对 dim 属性进行修改将是有效的:
dim(m) <- c(dim(m)[1]*dim(m)[2], 1)
m
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
将有更紧凑的方法来获取维度的乘积,但上述方法强调了 dim 属性是矩阵的二元素向量。在该示例中获得“9”的其他方法包括:
> prod(dim(m))
[1] 9
> length(m)
[1] 9
关于r - 向量化矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570537/