R矩阵按行和列名称从宽到长

时间:2019-03-07 09:23:04

标签: r reshape

我有一个像这样的矩阵:

( MAT = cbind(apple = c(cat=1, dog=2), banana = c(3, 4)) )

      apple banana
cat     1      3
dog     2      4

我想像这样将其转换为长格式:

( LONG = data.frame(value = as.vector(MAT),
                fruit = rep(colnames(MAT), each = nrow(MAT)),
                animal = rep(rownames(MAT), ncol(MAT))) )



  value  fruit animal
1     1  apple    cat
2     2  apple    dog
3     3 banana    cat
4     4 banana    dog

有人有更简单的方法吗?显然,有很多方法可以做到这一点,而我要寻找的是比上面更简单的方法。

如果我必须创建一个data.frame,将行名添加为新列,加载tidyr库并进行一个复杂的函数调用来收集,那么我不认为这更简单。

0 个答案:

没有答案