Mam sekwencję, która ma różną długość, np. coś takiego:Dzielenie sekwencji nieznanej długości na określoną liczbę zestawów w R
items <- 1:4
Chcę podzielić ją na każdej możliwej kombinacji n
liczby zestawów. Tak mówią n
wynosi dwa, chcę wrócić:
Set A Set B
----- -----
1 2 3 4
1 2 3 4
1 2 3 4
1 3 2 4
itd. Układ wewnątrz zestawów nie ma znaczenia, to znaczy zbioru {1
, 2
, 3
} jest taka sama jak {2
, 1
, 3
}. Zestawy nie mogą być puste.
Najlepszy mogłem wymyślić (używając permn
z pakietu combinat
) wynosi:
n <- 2
r <- 1:length(items)
arrangements <- NULL
for (i in 1:(n-1)) {
A <- r[(1:i)]
B <- r[-(1:i)]
arrangements <- c(arrangements, apply(do.call(rbind, permn(1:length(items))), 1, function(z) list(z[A], z[B])))
}
Która jest dość bezużyteczne, ponieważ zwraca zestawy, które są równe tzn {1
, 2
, 3
} i {2
, 1
, 3
} i nie jest wystarczająco elastyczny, aby obsłużyć różne wartości: n
. Ktoś ma jakieś pomysły, jak mogę to zrobić? Dzięki.