R中的排列和组合

时间:2018-06-07 15:23:33

标签: r combinations permutation combinatorics

我将N=4元素和q=3元素标识为123

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

这些行与其他行相关联。例如,可以通过排列行12的元素22来构造行3。同样,可以使用行1构建行5

那么,有没有办法构建行313478,但不是行92561011

1 个答案:

答案 0 :(得分:4)

听起来你想要对待你的2s和3s等同于排列。这是一个只使用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