我正在尝试通过第一列合并所有矩阵列表,如下所示:
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