我目前有一个479 x 729的矩阵,我想将这个矩阵转换成三列矩阵,这样第一列就是原始矩阵的行条目,第二列是该列的条目。原始矩阵,第三列是该列和行条目的值。
有一种简单的方法吗?我查看了reShape
函数,但还没弄清楚如何在这里应用它。这样做的动机是能够为矩阵内包含其位置的元素创建距离表。
答案 0 :(得分:1)
可能有更好或更聪明的方式,但这似乎是直截了当且足够快:
m <- matrix(rnorm(349191), 479, 729)
row_num <- as.vector(row(m))
col_num <- as.vector(col(m))
val <- as.vector(m)
new_m <- as.matrix(cbind(row_num, col_num, val))
dim(new_m)
# [1] 349191 3
head(new_m)
# row_num col_num val
# [1,] 1 1 1.0839690124
# [2,] 2 1 0.7363313818
# [3,] 3 1 0.0001195304
# [4,] 4 1 0.2123100877
# [5,] 5 1 0.1293427830
# [6,] 6 1 1.1773676868
tail(new_m)
# row_num col_num val
# [349186,] 474 729 -0.07942063
# [349187,] 475 729 -0.25694755
# [349188,] 476 729 -0.69421258
# [349189,] 477 729 1.24861689
# [349190,] 478 729 0.24377606
# [349191,] 479 729 0.49150676
答案 1 :(得分:1)
您可以使用:
library(reshape2)
melt(M)
其中M
是你的矩阵