合并矩阵元素

时间:2018-10-26 11:56:28

标签: r matrix combinatorics

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

示例:

this

预期输出:

1   3   5
2   6   7  

规则:

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

我尝试执行此操作,但未获得确切结果

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

1 个答案:

答案 0 :(得分:0)

有很多方法,

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),])) })
)