2015-08-23 6 views
-2

У меня есть данные, как показано ниже. Я хотел бы получить все подмножества из 2 и 5 элементов (порядок элементов не важен).R сочетание подмножество

В нижнем случае, поскольку существует 8 элементов - всего 28 комбинаций из 2 элементов и 56 комбинаций из 5 элементов. Как я могу получить список элементов в каждом подмножестве?

element_list =c(0,1,3,4,2,2,7,4) 
+0

Есть ли что-нибудь, что вы уже пробовали? Кроме того: я не уверен, правильно ли я понимаю, но это может помочь найти * «Пермутация» *. – maj

ответ

3

Вы хотите использовать combn, итерация по значению m, которые мы выбираем, чтобы быть 2 и 5

combos <- lapply(c(2, 5), combn, x = element_list, simplify = FALSE) 
lengths(combos) 
# [1] 28 56 

Или уронить simplify аргумент возвращает список матриц.

+0

Я попробовал 'com = as.data.frame (комбо [[2]])' для сохранения комбинаций из 5 элементов. Но каждая комбинация сохраняется как столбец. Любой более простой способ сохранить каждую комбинацию в строке? – user2543622

+0

Возможно, что-то вроде 'do.call (rbind, lapply (гребни [[2]], function (x) setNames (as.data.frame.list (x), 1: 5)))' если вы используете ' combos'. В противном случае просто 'as.data.frame (t (combos [[2]]))' –

+0

На самом деле это просто 'as.data.frame (do.call (rbind, combos [[2]]))', если вы используете ' simplify = FALSE' –

Смежные вопросы