R中的排列组合
Permutations and combinations in R
我有 N=4
个元素和 q=3
个元素,符号为 1
、2
、3
.
我创建矩阵 M
,它包含 N=4
个元素的所有向量,其中 2
个元素等于 1
,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
我想要一种不创建行 2
、5
、6
、10
、11
和 [=30= 的方法].
这些行与其他行相连。例如,行 2
可以通过排列行 1
的元素 2
和 3
来构造。以同样的方式,可以使用行 3
.
构造行 5
那么,有什么方法可以构造行 1
、3
、4
、7
、8
和 9
,但不是行 2
、5
、6
、10
、11
和 12
?
听起来您想对 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
我有 N=4
个元素和 q=3
个元素,符号为 1
、2
、3
.
我创建矩阵 M
,它包含 N=4
个元素的所有向量,其中 2
个元素等于 1
,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
我想要一种不创建行 2
、5
、6
、10
、11
和 [=30= 的方法].
这些行与其他行相连。例如,行 2
可以通过排列行 1
的元素 2
和 3
来构造。以同样的方式,可以使用行 3
.
5
那么,有什么方法可以构造行 1
、3
、4
、7
、8
和 9
,但不是行 2
、5
、6
、10
、11
和 12
?
听起来您想对 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