2014-10-13 5 views
2

내가이에서이올바른 사용

list1 <- list(c("A1", "A2"), "B", c("C1", "C2")) 

내가있는 모든 요소의 조합의 목록을 포함하는 목록을 생성 할 것 같습니다 목록 개체가 어떤 조합 list1. list1의 경우는 다음과 같아야합니다.

list2 <- list(list("A1", "B", "C1"), list("A1", "B", "C2"), list("A2", "B", "C1"), list("A2", "B", "C2")) 

list1에 더 많은 요소가 있으면 수동으로 생성 할 수 없게됩니다. R에서이 작업을 수행하려면 어떻게해야합니까?

답변

6

나는 조금 다른 것을 제안합니다. 그냥 expand.grid를 사용하여 조합의 data.frame 얻을 : "data.table"로, 유사

expand.grid(list1) 
# Var1 Var2 Var3 
# 1 A1 B C1 
# 2 A2 B C1 
# 3 A1 B C2 
# 4 A2 B C2 

또는를 사용 CJ :

library(data.table) 
do.call(CJ, list1) 
# V1 V2 V3 
# 1: A1 B C1 
# 2: A1 B C2 
# 3: A2 B C1 
# 4: A2 B C2