0

我使用以下代码:

library(foreach)
  library(doParallel)
  N<-5
  cl<-makeCluster(4)
  registerDoParallel(cl)

  comb <- function(x, ...) {
    lapply(seq_along(x),
           function(i) c(x[[i]], lapply(list(...), function(y) y[[i]])))
  }
  oper <- foreach(i=1:10, .combine='comb', .multicombine=TRUE,
                  .init=list(list(), list(), list())) %dopar% {
                    list(i+4, i+3, i+2)
                  }
  stopCluster(cl) 

如果我需要插入K不同的功能。有没有办法在.init=list(list(), list(), list())列表中定义K(在这种情况下为 K=3)而不是添加的函数,list()?每个都oper运行在单独的核心 (CPU) 上吗?输出是:

> oper[[1]]
[[1]]
[1] 5

[[2]]
[1] 6

[[3]]
[1] 7

[[4]]
[1] 8

[[5]]
[1] 9

[[6]]
[1] 10

[[7]]
[1] 11

[[8]]
[1] 12

[[9]]
[1] 13

[[10]]
[1] 14

> oper[[2]]
[[1]]
[1] 4

[[2]]
[1] 5

[[3]]
[1] 6

[[4]]
[1] 7

[[5]]
[1] 8

[[6]]
[1] 9

[[7]]
[1] 10

[[8]]
[1] 11

[[9]]
[1] 12

[[10]]
[1] 13

> oper[[3]]
[[1]]
[1] 3

[[2]]
[1] 4

[[3]]
[1] 5

[[4]]
[1] 6

[[5]]
[1] 7

[[6]]
[1] 8

[[7]]
[1] 9

[[8]]
[1] 10

[[9]]
[1] 11

[[10]]
[1] 12

我想添加一些额外的功能 ( K) 而无需,list()在相关位置添加。所以当我写的时候,oper[[K]]我会得到相关的结果。

4

0 回答 0