首页 > 解决方案 > R - 在公共列上合并矩阵

问题描述

我正在尝试将矩阵列表全部合并到第一列,如下所示:

a  x   x
a  q   q
b  y   y
c  z   z
d  w   w               x  x  x  x
e  v   v               q  q  q  q
e  r   r               y  y  y  y
          ---------->  z  z  z  z    
a  x   x               w  w  w  w   
a  q   q               v  v  v  v
b  y   y               r  r  r  r
c  z   z
d  w   w           
e  v   v
e  r   r     

我想使用第一列来组合矩阵,但它不需要在结果矩阵中。挑战我的是第一行(ae)中有多个相同值的实例

我一直在环顾四周,但找不到任何解决方案可以解释与矩阵连接的列中的相同值。使用我当前的代码(如下所示),我得到如下信息:

x  x  x  x
q  q  q  q
x  x  x  x
q  q  q  q
x  x  x  x
q  q  q  q
y  y  y  y
z  z  z  z    
w  w  w  w   
v  v  v  v
r  r  r  r
v  v  v  v
r  r  r  r
v  v  v  v
r  r  r  r

我似乎无法找出重复行出现的原因,但它与长度有关,list 所以我假设它发生在merge函数中。

mergeM <- function(list){ # list is a list of matrices
   len = length(list)   

  mat = merge(list[[1]],list[[2]],by.x = "V1", by.y = "V1", all = TRUE)
  if(len >2){
     for(i in 3:len){
       mat = merge(mat,list[[i]],by.x = "V1", by.y = "V1", all = TRUE)
     }
  }
  mat = mat[,-1]
  return(mat)
}# end function

标签: rmatrixmerge

解决方案


推荐阅读