【问题标题】:Permutations and combinations in RR中的排列和组合
【发布时间】:2018-06-07 15:23:32
【问题描述】:

我有N=4 元素和q=3 元素符号为1,2,3

我创建矩阵M,其中包含2 元素等于11 元素等于21 元素等于@987654334 的所有N=4 元素向量@ 在所有可能的位置,使用interpc 如下:

library(iterpc)
I=iterpc(c(2,1,1), labels=c(1,2,3), ordered=TRUE)
M=getall(I)
> M
      [,1] [,2] [,3] [,4]
 [1,]    1    1    2    3
 [2,]    1    1    3    2
 [3,]    1    2    1    3
 [4,]    1    2    3    1
 [5,]    1    3    1    2
 [6,]    1    3    2    1
 [7,]    2    1    1    3
 [8,]    2    1    3    1
 [9,]    2    3    1    1
 [10,]    3    1    1    2
 [11,]    3    1    2    1
 [12,]    3    2    1    1

我想要一种方法来不创建行 256101112

这些行与其他行相连。例如,行2可以通过排列1的元素23来构造。以同样的方式,行5 可以使用行3 构造。

那么,有没有办法只构造行134789,但不能构造行256101112 ?

【问题讨论】:

  • 为什么保留第 8 行?
  • @MelissaKey 我更正了我的答案。我保留第 8 行,因为有了这个我可以创建第 11 行。所以,如果我保留第 8 行或第 11 行,它是相同的。
  • 请包含库调用
  • 您需要清楚说明两行“已连接”的规则。
  • 需要注意的是iterpc不再维护,鼓励用户切换到arrangements。见this link

标签: r combinations permutation combinatorics


【解决方案1】:

听起来您想同等对待 2 和 3 的排列。这是一个仅使用 1s 和 3s 进行初始生成的解决方案,然后遍历每一行,将前 3 更改为 2:

library(iterpc)
I=iterpc(c(2,2), labels=c(1,3), ordered=TRUE)
M=getall(I)
t(apply(M, 1, function(x) {x[match(3, x)] = 2; x}))
#      [,1] [,2] [,3] [,4]
# [1,]    1    1    2    3
# [2,]    1    2    1    3
# [3,]    1    2    3    1
# [4,]    2    1    1    3
# [5,]    2    1    3    1
# [6,]    2    3    1    1

【讨论】:

  • 难以置信的洞察力!!!这让我想知道如何将其扩展到一般情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多