【发布时间】:2022-01-09 09:23:50
【问题描述】:
我在下面有一个 foreach 嵌套循环的简单示例。如何提高结果res的可读性?
下面是嵌套 for 循环的另一个示例,它具有更易读的结果,列表的每个元素都可以很容易地识别,例如res_desired[["B"]][[3]]
library(foreach)
library(doFuture)
registerDoFuture()
plan(multicore, workers = 1)
# foreach loop
res <- foreach(a = c("A", "B", "C", "D")) %:%
foreach(b = 1:4) %do%
{
paste0(rep(a, b))
}
# for loop
res_desired <- list()
for(a in c("A", "B", "C", "D"))
{
for(b in 1:4)
{
res_desired[[a]][[b]] <- paste0(rep(a, b))
}
}
【问题讨论】:
-
这是关于命名,即
names(res) <- LETTERS[1:4],然后您可以提取为res_desired,即res[["B"]][[3]]# [1] "B" "B" "B" -
有时,我有五层嵌套循环。 For 循环将在最分散的级别为每个元素添加名称。如何在 foreach 循环中为列表的每个元素添加名称
-
也许你需要
foreach(a = c("A", "B", "C", "D"), .final = function(x) setNames(x, c("A", "B", "C", "D"))) %:% foreach(c = c("a", "b", "c"), .final = function(x) setNames(x, c("a", "b", "c"))) %:%foreach(b = 1:4) %do% {paste0(rep(a, b))}(多加一个内循环)