Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 逐行组合矩阵_R_Matrix_Cbind_Rowwise - Fatal编程技术网

R 逐行组合矩阵

R 逐行组合矩阵,r,matrix,cbind,rowwise,R,Matrix,Cbind,Rowwise,我有两个任意大小的矩阵,例如矩阵1(n*m)和矩阵2(k*l)。在R中是否有一种(方便的)方法将它们逐行cbind形成一个(n*k)*(m+l)矩阵,其中矩阵1的每一行都有机会cbinded到矩阵2的每一行?它是一个完整的逐行组合,因此顺序无关紧要 例如,是否存在一个函数f: 谢谢 可能有更好的解决方案,但这适用于较小尺寸的问题: A <- matrix(c(1,2,3,2,3,4), nrow = 3) B <- matrix(c(5,6,6,7,7,8), nrow = 2)

我有两个任意大小的矩阵,例如矩阵1(n*m)和矩阵2(k*l)。在R中是否有一种(方便的)方法将它们逐行
cbind
形成一个(n*k)*(m+l)矩阵,其中矩阵1的每一行都有机会
cbind
ed到矩阵2的每一行?它是一个完整的逐行组合,因此顺序无关紧要

例如,是否存在一个函数
f


谢谢

可能有更好的解决方案,但这适用于较小尺寸的问题:

A <- matrix(c(1,2,3,2,3,4), nrow = 3)
B <- matrix(c(5,6,6,7,7,8), nrow = 2)

temp <- lapply(1:nrow(A), function(x){
  C = apply(B, 1, function(y){
    c(A[x,],y)
  })
  return(t(C))
})

output <- do.call(rbind, temp)

A今后,请包括可复制/粘贴的示例数据,而不仅仅是图片

m1 = matrix(1:6, ncol = 2)
m2 = matrix(7:12, ncol = 3)

combos = expand.grid(1:nrow(m1), 1:nrow(m2))
cbind(m1[combos$Var1, ], m2[combos$Var2, ])
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    4    7    9   11
# [2,]    2    5    7    9   11
# [3,]    3    6    7    9   11
# [4,]    1    4    8   10   12
# [5,]    2    5    8   10   12
# [6,]    3    6    8   10   12

非常感谢。使用apply和Lappy效果很好!我只是想知道有什么函数可以实现这一点…@KenChen如果你没有这个名字(我当然没有),它是否有一个函数是值得怀疑的。很好的方法,尽管把它放在AllonOnlinewithNospaces真的很难阅读和理解。我明白你的意思
cbind(A[rep(1:(x<-nrow(A)),each=y<-nrow(B)),],B[rep(1:y,x),])
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    5    6    7
[2,]    1    2    6    7    8
[3,]    2    3    5    6    7
[4,]    2    3    6    7    8
[5,]    3    4    5    6    7
[6,]    3    4    6    7    8
  x=nrow(A)
  y=nrow(B)
  cbind(A[rep(1:x,each=y),],B[rep(1:y,x),])