Использование функции expand.grid с n элементами - PullRequest
0 голосов
/ 24 сентября 2018

Мне нужно сгенерировать все комбинации 1:n, повторенные n раз.Пример с n = 4:

expand.grid(1:4, 1:4, 1:4, 1:4)

Этот метод, однако, потребует много печатать, когда n больше.Есть ли эффективный способ сделать это?Я попробовал paste и не смог заставить его работать.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Прежде всего, вы ищете перестановки с повторениями, а не комбинации.Во-вторых, есть несколько пакетов для эффективного получения этого в R.Есть классический пакет gtools и две высокоэффективные скомпилированные библиотеки arrangements и RcppAlgos (я автор):

## library(gtools)
gtools::permutations(4, 4, repeats.allowed = TRUE)

## library(arrangements)
arrangements::permutations(4, 4, replace = TRUE)

## library(RcppAlgos)
RcppAlgos::permuteGeneral(4, 4, TRUE)
0 голосов
/ 24 сентября 2018

Мы можем rep лицензировать в list и применять expand.grid

n <- 4
expand.grid(rep(list(seq_len(n)), n))

Или использовать replicate

expand.grid(replicate(n, seq_len(n), simplify = FALSE))
...