合并矩阵元素

Combine matrix elements

我希望从大小为 m * n 的矩阵中获取元素的所有组合。

示例:

1   3   5
2   6   7  

预期输出:

2 , 1
2 , 3
2 , 5
6 , 1
6 , 3
6 , 5
7 , 1
7 , 3
7 , 5

规则:

  1. 每个组合都从矩阵的底部开始,向顶部进行。不过它可能会切换列。
  2. 每个组合的元素数应等于行数。
  3. 组合中同一行的元素不能出现两次。
  4. 列数和行数可能会有所不同。所以解决方案必须是通用的。

我试过这样做但没有得到确切的结果

m <- rbind(c(1, 3, 5), c(2, 6, 7))
do.call(expand.grid, split(m, rep(nrow(m):1, ncol(m))))

方法很多,

do.call(
    rbind,lapply(m[2,], function(x){ cbind(x, c(m[1,])) })
)

数据:

m<-
structure(c(1L, 2L, 3L, 6L, 5L, 7L), .Dim = 2:3, .Dimnames = list(
    NULL, c("V1", "V2", "V3")))

结果:

#   x  
#V1 2 1
#V2 2 3
#V3 2 5
#V1 6 1
#V2 6 3
#V3 6 5
#V1 7 1
#V2 7 3
#V3 7 5

一般解决方案:

do.call(
    rbind,lapply(m[nrow(m),], function(x){ cbind(x, c(m[-nrow(m),])) })
)