我有一个列表列表,其中内容是字符向量。例如:
yoda <- list(a=list(c("A","B","C"), c("B","C","D")), b=list(c("D","C"), c("B","C","D","E","F")))
这是一个更短的版本,我实际上正在尝试这样做,对我来说,有 11 个列表成员,每个成员都有大约 12 个子列表。对于每个列表成员,我需要选择一个子成员 liste.g. 一个“a”列表和一个“b”列表。我想找出哪个子列表组合提供了最多的唯一值,在这个简单的示例中,它将是“a”中的第一个子列表和“b”中的第二个子列表,给出最终答案:
c("A","B","C","D","E","F")
目前我刚刚得到了大量的嵌套循环,而且它似乎永远存在。这是一段糟糕的代码:
res <- list()
for (a in 1:length(extra.pats[[1]])) {
for (b in 1:length(extra.pats[[2]])) {
for (c in 1:length(extra.pats[[3]])) {
for (d in 1:length(extra.pats[[4]])) {
for (e in 1:length(extra.pats[[5]])) {
for (f in 1:length(extra.pats[[6]])) {
for (g in 1:length(extra.pats[[7]])) {
for (h in 1:length(extra.pats[[8]])) {
for (i in 1:length(extra.pats[[9]])) {
for (j in 1:length(extra.pats[[10]])) {
for (k in 1:length(extra.pats[[11]])) {
res[[paste(a,b,c,d,e,f,g,h,i,j,k, sep="_")]] <- unique(extra.pats[[1]][[a]], extra.pats[[2]][[b]], extra.pats[[3]][[c]], extra.pats[[4]][[d]], extra.pats[[5]][[e]], extra.pats[[6]][[f]], extra.pats[[7]][[g]], extra.pats[[8]][[h]], extra.pats[[9]][[i]], extra.pats[[10]][[j]], extra.pats[[11]][[k]])
}
}
}
}
}
}
}
}
}
}
}
如果有人有任何想法如何正确地做到这一点,那就太好了。