将具有不同维度的多个矩阵写入剪贴板保持dimnames

时间:2013-12-03 19:58:05

标签: r excel matrix

我有两个矩阵

mat1 <- matrix(1:4, nrow=2)
dimnames(mat1) <- list(letters[1:2], letters[3:4])
mat2 <- matrix(11:19, nrow=3)
dimnames(mat2) <- list(letters[10:12], letters[13:15])

我希望将两个矩阵“cbind”成一个对象x,这样我就可以write.table(x, "clipboard", sep="\t", col.names=NA),粘贴到Excel中,让两个矩阵并排显示,并且它们的dimnames完好无损。

    c   d       m   n   o
a   1   3   j   11  14  17

b   2   4   k   12  15  18

            l   13  16  19

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

至少对于典型的基本R功能是不可能的。您需要扩充较小的(或可能的两者),以便它们可以被cbind()编辑,然后粘贴(使用制表符分隔符)到Excel中。即使将字符流复制到剪贴板中以便在一个矩阵上执行此操作,操作也是微不足道的。 Ripley-Venables编写的MASS包具有write.matrix函数,但它不写rownames,只写列名。这是衍生(省略阻止选项)功能,首先在左上角添加一个空白,然后在处理前绑定rownames。它可以与在第二个中插入rownames的函数配对。也许{/ 1}}函数用

实现
cbind.fill

接着是MASS :: write.matrix第二部分的黑客攻击:

matbound <-cbind.fill(mat1, cbind(rownames(mat2),mat2) )

(剪贴板值可能是Windows机器上的“剪贴板”。)