2015-10-02 4 views
0

Я хочу точно указать, что сделано в этом question, но в моем случае у меня есть список вместо одного вектора.Получить все возможные кортежи для каждого элемента в списке

Мой код выглядит следующим образом:

X_ess <- list(c('a','b','c'),c('d','e','f')) 
x <- seq_along(X_ess) 
xi <- unlist(lapply(x, function(n) combn(x, n, simplify=FALSE)), recursive=FALSE) 
lapply(xi, function(i) X_ess[i]) 

он не возвращает то, что ожидается. Он возвращает все возможные кортежи для каждого элемента в моем списке: (a, b), (a, c), (b, c), ......, (e, f).

EDIT Мой вывод должен выглядеть следующим образом:

[1] "a" "b" 
[2] "a" "c" 
[3] "b" "c" 
[4] "d" "e" 
[5] "d" "f" 
[6] "e" "f" 
+0

Можете ли вы предоставить пример вывода вы хотите? – KrunalParmar

+1

Вам нужно 'lapply (X_ess, function (x) lapply (seq_along (x), function (i) combn (x, i)))' – akrun

+0

@KrunalParmar я добавил образец вывода – Simplytif

ответ

1

Вы можете попробовать:

library(gtools) 
Reduce(rbind,lapply(X_ess, function(x) combinations(length(x), 2, x))) 

    [,1] [,2] 
[1,] "a" "b" 
[2,] "a" "c" 
[3,] "b" "c" 
[4,] "d" "e" 
[5,] "d" "f" 
[6,] "e" "f" 
Смежные вопросы