2015-08-23 101 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(combos [[2]])'來保存5個元素的組合。但是每個組合都保存爲一列。任何簡單的方法來保存連續的每個組合? – user2543622

+0

也許像'do.call(rbind,lapply(combs [[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]]))'如果你使用'簡化= FALSE' –