Tôi gặp phải một số sự cố khi sử dụng foreach% dopar% khi tải các đối tượng từ đĩa vào bộ nhớ ... Các đối tượng không được tải khi tôi cố tải chúng khi sử dụng foreach% dopar% (nó hoạt động khi tôi chỉ sử dụng% do%) Dưới đây là một ví dụ đơn giản cho thấy vấn đề của tôi.tải không hoạt động với foreach và% dopar%
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)
Kết quả thực thi mã này là (không có ">"):
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
Tôi hiểu rằng tôi không thể cải thiện IO với foreach từ IO là tuần tự trên kiến trúc của tôi. Tôi chỉ muốn hiểu tại sao điều này không hoạt động ...
Cảm ơn câu trả lời của bạn.
Trân trọng, Samo.
Vì vậy, tôi đoán đây là nó. Có thể ai đó có thể tư vấn về danh sách R-help nào tôi nên đăng câu hỏi này để có câu trả lời? Thnx. – user859821