在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。
答案 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)