我试图找到一个数字的所有可能组合,即基本上是数字的阶乘,但也显示所有可能的组合。
当我使用allPerms函数时,我应该得到所有可能的组合,但它总是给出一个组合。为什么会这样?
library(permute)
allPerms(3)
[,1] [,2] [,3]
[1,] 1 3 2
[2,] 2 1 3
[3,] 2 3 1
[4,] 3 1 2
[5,] 3 2 1
allPerms(4)
[,1] [,2] [,3] [,4]
[1,] 1 2 4 3
[2,] 1 3 2 4
[3,] 1 3 4 2
[4,] 1 4 2 3
[5,] 1 4 3 2
[6,] 2 1 3 4
[7,] 2 1 4 3
[8,] 2 3 1 4
[9,] 2 3 4 1
[10,] 2 4 1 3
[11,] 2 4 3 1
[12,] 3 1 2 4
[13,] 3 1 4 2
[14,] 3 2 1 4
[15,] 3 2 4 1
[16,] 3 4 1 2
[17,] 3 4 2 1
[18,] 4 1 2 3
[19,] 4 1 3 2
[20,] 4 2 1 3
[21,] 4 2 3 1
[22,] 4 3 1 2
[23,] 4 3 2 1
正如您所看到的,两种情况的123和1234的最初组合分别缺失。
我知道我可以使用combinat包中的permn()函数获得所有可能的组合。
我只是想知道是否有办法将allPerms本身用于此目的。或任何其他功能。任何关于此的信息都非常有用。谢谢。
答案 0 :(得分:3)
您希望使用observed
辅助函数将TRUE
标记设置为how()
。
h <- how(observed = TRUE)
allPerms(3, h)
> h <- how(observed = TRUE)
> allPerms(3, h)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 3 2
[3,] 2 1 3
[4,] 2 3 1
[5,] 3 1 2
[6,] 3 2 1
为什么observed = FALSE
是默认值?嗯,这是故意的,因为整个包装是从限制排列测试的角度设计的,这种排列测试在生态学中的排序方法的应用中是常见的。鉴于我们已经有了观察到的排列,数据,我们不希望它在用于定义测试统计量的空分布的排列中;我们做得很好,但只能通过观察到的数据,而不是排列期间可能出现的任何额外数据。