[英]Processing nested lists in nested for loop
我有 2 个变量,我需要使用这 2 个变量创建所有组合。 我已经能够使用 R 组合 function 来实现这一点,最后将组合存储在嵌套列表中。 现在我需要为每个组合运行一些计算并将组合的 output 存储在一起。 我正在尝试将 output 存储在列表中,但由于某种原因,没有以正确的方式生成 output 列表。 下面是一个示例代码:
''''
input_variables <- c("a","b")
output_sublist <- list()
output_biglist <- list()
input_combination_list <- list()
for (i in 1:length(input_variables)) {
input_combination_list[[i]] <- combn(input_variables, i, simplify = FALSE)
for(j in 1:length(input_combination_list[[i]])) {
input_combination_list[[i]][[j]]
output_sublist[[j]] <- input_combination_list[[i]][[j]]
}
output_biglist[[i]] <- output_sublist
}''''
我得到的 output 是:
[[1]]
[[1]][[1]]
[1] "a"
[[1]][[2]]
[1] "b"
[[2]]
[[2]][[1]]
[1] "a" "b"
[[2]][[2]]
[1] "b"
我想要的是:
[[1]]
[[1]][[1]]
[1] "a"
[[1]][[2]]
[1] "b"
[[2]]
[[2]][[1]]
[1] "a" "b"
我不确定为什么最后会有一个额外的“b”。任何帮助将不胜感激。 提前非常感谢。
i = 1
的output_sublist
是
#[[1]]
#[1] "a"
#[[2]]
#[1] "b"
对于i = 2
,因为我们不清除output_sublist
它只替换第一个值,第二个值保持原样。
#[[1]]
#[1] "a" "b"
#[[2]]
#[1] "b"
您需要在i
的每次迭代后清除output_sublist
。
for (i in 1:length(input_variables)) {
output_sublist <- list() #Added a line here to clear output_sublist
input_combination_list[[i]] <- combn(input_variables, i, simplify = FALSE)
for(j in 1:length(input_combination_list[[i]])) {
input_combination_list[[i]][[j]]
output_sublist[[j]] <- input_combination_list[[i]][[j]]
}
output_biglist[[i]] <- output_sublist
}
output_biglist
#[[1]]
#[[1]][[1]]
#[1] "a"
#[[1]][[2]]
#[1] "b"
#[[2]]
#[[2]][[1]]
#[1] "a" "b"
但是,正如评论中提到的,我们也可以使用lapply
来做到这一点
lapply(seq_along(input_variables), function(x)
combn(input_variables, x, simplify = FALSE))
#[[1]]
#[[1]][[1]]
#[1] "a"
#[[1]][[2]]
#[1] "b"
#[[2]]
#[[2]][[1]]
#[1] "a" "b"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.