R - Объединить матрицы на общем столбце - PullRequest
2 голосов
/ 01 июля 2019

Я пытаюсь объединить список матриц по первому столбцу следующим образом:

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     

Я хотел бы использовать первый столбец для объединения матриц, но он не обязательно должен быть вПолученная матрица.Меня бросает вызов тот факт, что в первом ряду есть несколько экземпляров одного и того же значения (a и e)

Я искал вокруг, но не смог найти ни одного решения, которое учитываетдля тех же значений в столбце, с которым соединяются матрицы.С моим текущим кодом (показанным ниже) я получаю что-то вроде:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...