我将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和12,我想要一种方法。
这些行与其他行相连。例如,行2可以通过排列行1的元素2和3来构造。同样,行5可以使用行3构建。
那么,是否有任何方法只构造行1、3、4、7、8和9,而不是构造行2、5、6、10、11和12?
发布于 2018-06-07 15:33:40
听起来,你想要对你的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 1https://stackoverflow.com/questions/50744951
复制相似问题