将不同尺寸的多个matrix写入保存暗号的剪贴板

我有两个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]) 

我想把这两个matrix“绑定”成一个对象x这样我就可以将write.table(x, "clipboard", sep="\t", col.names=NA)粘贴到Excel中,并将两个matrix显示出来与他们的暗号保持并排。

  cdmno a 1 3 j 11 14 17 b 2 4 k 12 15 18 l 13 16 19 

什么是最好的方法来做到这一点?

至less使用典型的基本Rfunction是不可能的。 您需要扩大较小的(或可能的两者),以便它们可以被cbind()编辑,然后用tab分隔符粘贴到Excel中。 即使将字符stream复制到将在一个matrix上执行此操作的剪贴板的操作也不是微不足道的。 Ripley-Venables创作的MASS包有一个write.matrix函数,但是它不写rownames,只写列名。 这是派生的(省略阻塞选项)函数,首先在左上angular添加一个空白,并在处理之前绑定rownames。 它可以与第二个插入rownames的函数配对。 也许用cbind.fill函数实现

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

紧随其后的是MASS :: write.matrix的第二部分:

 write.matrix.clip <- function (x, file = "", sep = "\t") {clip <- pipe("pbcopy", "w") x <- as.matrix(x) p <- ncol(x) cn <- c(" ", colnames(x)) cat(c(cn, format(t( cbind(rownames(x),x)))), file = clip, sep = c(rep(sep, p ), "\n")); close(clip) } write.matrix.clip(matbound) 

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