R-在公共列上合并矩阵

时间:2019-07-01 18:13:45

标签: r matrix merge

我正在尝试通过第一列合并所有矩阵列表,如下所示:

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

0 个答案:

没有答案