R中的排列组合

Permutations and combinations in R

我有 N=4 个元素和 q=3 个元素,符号为 123.

我创建矩阵 M,它包含 N=4 个元素的所有向量,其中 2 个元素等于 11 个元素等于21 元素在所有可能的位置都等于 3,使用 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

我想要一种不创建行 2561011 和 [=30= 的方法].

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

构造行 5

那么,有什么方法可以构造行 134789,但不是行 256101112 ?

听起来您想对 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