R中的矩阵重排

时间:2016-06-29 21:47:16

标签: r matrix

如果我有一个矩阵,如

      A   B   F
   1 .5  .25  .4
   2 .25  .3  .1
   3 .15  .2   .3

我希望创建一些数据框的形式,例如

   1    A   .5
   2    A   .25
   3    A   .15
   1    B   .25
   2    B   .3

等。我试过使用重塑包没有运气,并想知道是否有办法在R中做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以利用R中的矩阵实际上只是应用了dim(即维度)属性的向量这一事实。

在下面的示例中,我假设您有一个矩阵,其中名为维度,如您的问题所示。

mat <- matrix(1:9, 3, 3, dimnames=list(1:3,c("A","B","F")))

#   A B F
# 1 1 4 7
# 2 2 5 8
# 3 3 6 9

# get names of dimensions
rows <- as.numeric(rownames(mat))
cols <- colnames(mat)

# reshape
dat <- data.frame( row=rep(rows, times=ncol(mat)),
                   col=rep(cols, each=nrow(mat)),
                   value=as.vector(mat) )

#   row col value
# 1   1   A     1
# 2   2   A     2
# 3   3   A     3
# 4   1   B     4
# 5   2   B     5
# 6   3   B     6
# 7   1   F     7
# 8   2   F     8
# 9   3   F     9