как получить все подмножества до N в R - PullRequest
5 голосов
/ 23 января 2012

Я хочу создать список, который содержит все 2 ^ n подмножеств чисел 1: N в R. Как это возможно?

expand.grid( rep( list( 0:4), 2))

возвращает фрейм данных, содержащий все подмножества размера 0: 4, но я хочу список, содержащий все подмножества всех размеров.

Ответы [ 2 ]

10 голосов
/ 23 января 2012

Как насчет

lapply(0:4, function(x) combn(4,x))
[[1]]
     [,1]

[[2]]
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4

[[3]]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    2    2    3
[2,]    2    3    4    3    4    4

[[4]]
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    2
[2,]    2    2    3    3
[3,]    3    4    4    4

[[5]]
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
6 голосов
/ 23 января 2012

В пакетных наборах есть функция set_power, которая должна возвращать набор мощности, который является правильным термином из того, что описывают ваши слова.Возможно, вы захотите пересмотреть свою терминологию, поскольку ваш код делает что-то другое.expand.grid не возвращает математические множества, а скорее упорядоченные комбинации.В теории множеств {1,1} сводится к {1}.В этом смысле Expand Grid не создает реальных наборов.Если вам нужен список всех data.frames длиной до 4, которые может создать файл expand.grid, вы можете получить это достаточно легко с помощью:

lapply(0:4, function(n) expand.grid( rep( list( 0:4), n)) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...