我有
mat1 <- matrix(c(1,2,3,4,5,6), ncol=2)
colnames(mat1) <- c("Soa","Nor")
mat2 <- matrix(c(1,0,1,1,0), nrow=1)
colnames(mat2) <- c("reman","jak","Soa","Alein","Nor")
我需要得到这个矩阵
Soa Nor
1 4
2 5
3 6
1 0
我使用它但不适用于列
merge(mat1,mat2, by="row.names", all = TRUE)
答案 0 :(得分:3)
rbind
更简单。您可以使用mat2
提取colnames(mat1)
的相关列,然后将它们绑定在一起。
> rbind(mat1, mat2[, colnames(mat1)])
# Soa Nor
#[1,] 1 4
#[2,] 2 5
#[3,] 3 6
#[4,] 1 0
答案 1 :(得分:1)
如果你想坚持使用merge
,你可以试试这个:
samecols <- intersect(colnames(mat1),colnames(mat2))
merge(mat1,mat2, by=samecols, all=TRUE)[samecols]
与您的代码的区别在于,by
是两个矩阵共享的列名称向量。正如@akrun在他的评论中指出的那样,使用rbind
通过以相同方式引用列来实现同样的目的。