Как я могу получить список всех разделов с K измерения R - PullRequest
0 голосов
/ 06 ноября 2018

Я использую этот код:

library("partitions")
x <- c(2,4,6)       
parts <- listParts(length(x))
out <- rapply(parts, function(ii) x[ii], how="replace")

для вычисления списка векторов всех разделов, но я бы выглядел как список разделов с размером k, например:

k=2
{(2),(4,6)}{(4),(2,6)}{(6),(2,4)}

1 Ответ

0 голосов
/ 06 ноября 2018

Возможно, есть лучшие способы сделать это, но следующее делает то, что вы хотите.

library(partitions)

funParts <- function(x, k){
  parts <- listParts(length(x))
  res <- lapply(parts, function(inx) sapply(inx, function(i) x[i]))
  res <- unlist(res, recursive = FALSE)
  res <- res[sapply(res, length) <= k]
  unique(res)
}

x <- c(2,4,6)       
k <- 2

funParts(x, 2)
funParts(x, 1)
funParts(4:10, 3)
...