i将生成分区的排列。 我用此代码生成分区: 库(分区)
x <- c(2,4,6)
parts <- listParts(length(x))
out <- rapply(parts, function(ii) x[ii], how="replace")
并生成
出
[[1]]
[1] (2,4,6)
[[2]]
[1] (2,6)(4)
[[3]]
[1] (2,4)(6)
[[4]]
[1] (4,6)(2)
[[5]]
[1] (2)(4)(6)
以一个元素[1](2)(4)(6)
为例,我将生成所有可能的排列。我尝试过:
library(combinat)
permn(x)
,但是return元素的输入形式不同,例如与element相同
[1](21,33,41,40,39,3,6)(13,37)
返回:
[[1]]
[[1]]$`1`
[1] 21 33 41 40 39 3 6
[[1]]$`2`
[1] 13 37
[[2]]
[[2]]$`2`
[1] 13 37
[[2]]$`1`
[1] 21 33 41 40 39 3 6
我在一周前做了类似的问题,但是当生成分区时给出的解决方案会为所有可能的分区生成排列,但是存在问题 效率我不能使用它。 解决方案就是这样:
library(partitions)
permListParts <- function (x)
{
f <- function(pp) {
out <- split(seq_along(pp), pp)
myPerms <- perms(length(out))
apply(myPerms, 2, function(x) {
temp <- out[x]
class(temp) <- c(class(temp), "equivalence")
temp
})
}
apply(setparts(x), 2, f)}