【发布时间】:2011-10-11 20:46:16
【问题描述】:
在将对象从磁盘加载到内存时,我遇到了一些使用 foreach %dopar% 的问题...当我尝试在使用 foreach %dopar% 时加载对象时未加载对象(当我仅使用 %do% 时它有效)下面是一个显示我的问题的简单示例。
envir = .GlobalEnv
x <- "X test"
y <- "Y test"
z <- "Z test"
save(x, file="x.RData")
save(y, file="y.RData")
save(z, file="z.RData")
rm(x)
rm(y)
rm(z)
objectsNamesVector <- c("x", "y", "z")
foreach(i=1:length(objectsNamesVector), .combine=function (...) NULL, .multicombine=TRUE) %do% {
print(paste("Loading object ", objectsNamesVector[i]," - ", i, " of ", length(objectsNamesVector), sep=""))
load(file=paste(objectsNamesVector[i], ".RData", sep=""), envir=envir)
}
print(x)
print(y)
print(z)
rm(x)
rm(y)
rm(z)
foreach(i=1:length(objectsNamesVector), .combine=function (...) NULL, .multicombine=TRUE) %dopar% {
print(paste("Loading object ", objectsNamesVector[i]," - ", i, " of ", length(objectsNamesVector), sep=""))
load(file=paste(objectsNamesVector[i], ".RData", sep=""), envir=envir)
}
print(x)
print(y)
print(z)
执行此代码的结果是(不带“>”):
envir = .GlobalEnv
x <- "X test"
y <- "Y test"
z <- "Z test"
save(x, file="x.RData")
save(y, file="y.RData")
save(z, file="z.RData")
rm(x)
rm(y)
rm(z)
objectsNamesVector <- c("x", "y", "z")
foreach(i=1:length(objectsNamesVector), .combine=function (...) NULL, .multicombine=TRUE) %do% {
+ print(paste("Loading object ", objectsNamesVector[i]," - ", i, " of ", length(objectsNamesVector), sep=""))
+ load(file=paste(objectsNamesVector[i], ".RData", sep=""), envir=envir)
+ }
[1] "Loading object x - 1 of 3"
[1] "Loading object y - 2 of 3"
[1] "Loading object z - 3 of 3"
NULL
print(x)
[1] "X test"
print(y)
[1] "Y test"
print(z)
[1] "Z test"
rm(x)
rm(y)
rm(z)
foreach(i=1:length(objectsNamesVector), .combine=function (...) NULL, .multicombine=TRUE) %dopar% {
+ print(paste("Loading object ", objectsNamesVector[i]," - ", i, " of ", length(objectsNamesVector), sep=""))
+ load(file=paste(objectsNamesVector[i], ".RData", sep=""), envir=envir)
+ }
NULL
print(x)
Error in print(x) : object 'x' not found
print(y)
Error in print(y) : object 'y' not found
print(z)
Error in print(z) : object 'z' not found
我知道我无法使用 foreach 改进 IO,因为 IO 在我的架构上是连续的。我只是想了解为什么这不起作用...
感谢您的回答。
问候, 萨摩。
【问题讨论】:
-
所以,我想就是这样。也许有人可以建议我应该发布这个问题以获得答案的 R-help 列表吗?谢谢。