2016-04-05 15 views
2

グループ化された要素のリストがありますが、これらの要素のすべての組み合わせを作成したいと思いますが、各グループから1つの要素を取りたいだけです。順序は関係ありません。グループ化された要素の組み合わせ

vars_list <- list(Group1 = letters[1:5], Group2 = letters[6:9], 
        Group3 = letters[10:11], Group4 = letters[12:15]) 

ここで、n = 2、n = 3、n = 4の組み合わせを作成したいとします。ここで、nは使用するグループの数です。

私はそれを行うための解決策を見つけたのn =グループの数(Combinations from recursive lists):私はグループのn個<数のためにこれを行うことができますどのように

lengths <- c(1, 1, 1, 1) 
combos <- expand.grid(mapply(function(element, n) combn(element, m=n, 
FUN=paste0, collapse=""), vars_list, lengths, SIMPLIFY = F)) 

あなたは、n = 1のために、あなたのグループのすべての組み合わせを取得するため combnを使用することができ
+0

n = 2の場合、取るべき要素はどこですか? 'Group1'と' Group3'、 'Group2'と' Group3'などですか? – adaien

+0

あなたの 'combos'は' expand.grid(vars_list) 'と全く同じで、' all(combos == expand.grid(vars_list)) 'を確認してください。 – user1981275

+0

adiana、n = 2は、 2つの別々のグループ。グループ1の 'a'とグループ2の 'f'。 user1981275、それは!あなたの答えが仕事をするように見えます。どうもありがとう。 – Xlrv

答えて

1

、N = 2、n = 3であり、n = 4、次に使用expand_grid

n = 2 
apply(combn(1:length(vars_list), n), 2, function(x){expand.grid(vars_list[x])}) 

ので、nの= 4、あなたあなたの質問と同じようになるでしょう。これはあなたが意味することですか?

+0

、あるいはすべての 'n'のリストを一つの' lapply'でラップすることができます: 'lapply(1:4、function(n){apply(combn(1:length(vars_list) n)、2、function(x){expand.grid(vars_list [x])}}) ' ' – user1981275

関連する問題