我有一个矩阵如下
B = matrix(
c(2, 4, 3, 1, 5, 7),
nrow=3,
ncol=2)
B # B has 3 rows and 2 columns
# [,1] [,2]
#[1,] 2 1
#[2,] 4 5
#[3,] 3 7
我想创建一个包含 3 列的 data.frame:行号、列号和上面矩阵的实际值。我正在考虑写2个for循环。有没有更有效的方法来做到这一点?
我想要的输出(我只显示下面的前两行)
rownum columnnum value
1 1 2
1 2 1
最佳答案
尝试
cbind(c(row(B)), c(col(B)), c(B))
或者
library(reshape2)
melt(B)
根据 @nicola 的评论,所需的输出可能按行优先顺序排列。在这种情况下,对矩阵进行转置并执行相同的操作
TB <- t(B)
cbind(rownum = c(col(TB)), colnum = c(row(TB)), value = c(TB))
关于R矩阵获取行列数和实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590534/