将m×n矩阵转换为n * m×3矩阵

时间:2016-01-19 17:21:01

标签: r matrix distance

我目前有一个479 x 729的矩阵,我想将这个矩阵转换成三列矩阵,这样第一列就是原始矩阵的行条目,第二列是该列的条目。原始矩阵,第三列是该列和行条目的值。

有一种简单的方法吗?我查看了reShape函数,但还没弄清楚如何在这里应用它。这样做的动机是能够为矩阵内包含其位置的元素创建距离表。

2 个答案:

答案 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是你的矩阵