я буду генерировать перестановки разделов.я генерирую разделы с этим кодом: библиотека (разделы)
x <- c(2,4,6)
parts <- listParts(length(x))
out <- rapply(parts, function(ii) x[ii], how="replace")
и генерирую
out
[[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)
, но возвращаемый элемент не в той же форме ввода, например, с элементом [1](21,33,41,40,39,3,6)(13,37)
return:
[[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)}