在R中,如何使在foreach循环中生成的每个数据帧在全局环境中可用

时间:2019-07-09 21:52:29

标签: r foreach global environment

在R中,如何使在foreach循环中生成的每个数据帧都可以在全局环境中用作单独的数据帧

我只能将它们保存到列表(x)中,但是列表分为3层;有超过40,000个数据帧,解压缩它们非常耗时。

x <- foreach(q=1:countq, .export = ls(globalenv())) %do% {
        foreach(p=1:countp, .export = ls(globalenv())) %do% {
          foreach(o=1:countero, .export = ls(globalenv())) %dopar% {
            n<-rbind(df_o, df_p, df_q)
          }
        }

最好从此嵌套的foreach循环中获取数据帧n1,n2,n3,...直到n40000。

1 个答案:

答案 0 :(得分:0)

将数据框列表列表转换为单个数据框(例如,使用data.table::rbindlist)后,您的数据应该易于使用。

library(doParallel)
registerDoParallel( cores = 2 )
countq <- countp <- countero <- 30
d <- mtcars
x <- 
foreach(q=1:countq) %do% {
    foreach(p=1:countp) %do% {
        foreach(o=1:countero) %dopar% {
            data.frame( q=q, p=p, o=o, d )
        }
    }
}
x <- lapply( x, function(u) lapply(u, data.table::rbindlist) )
x <- lapply( x, data.table::rbindlist )
x <- data.table::rbindlist(x)
x <- as.data.frame(x)