Tôi muốn biết liệu có thể xuất hai đối tượng khác nhau sau khi sử dụng vòng lặp foreach
%dopar%
không.outptut hai đối tượng sử dụng foreach
Tôi sẽ cố gắng giải thích những gì tôi đang tìm kiếm. Giả sử tôi có hai data.frames như là kết quả của một số hoạt động bên trong vòng lặp:
library(doMC)
library(parallel)
registerDoMC(cores=4)
result <- foreach(i=1:100) %dopar% {
#### some code here
#### some code here
vec1 <- result_from_previous code # It would be the 1st object I'd like to ouput
vec2 <- result_from_previous code # It would be the 2nd object I'd like to output
}
đầu ra của tôi mong muốn sẽ là một danh sách các data.frames chiều dài 2, chẳng hạn như:
dim(result[[1]]) # equals to nrow=length(vec1) and ncol=100
dim(result[[2]]) # equals to nrow=length(vec2) and ncol=100
tôi đã thử với điều này từ một bài trước Saving multiple outputs of foreach dopar loop:
comb <- function(x, ...) {
lapply(seq_along(x), function(i) c(x[[i]], lapply(list(...), function(y) y[[i]])))
result <- foreach(i=1:100, .comb='comb', .multicombine=TRUE) %dopar% {
#### some code here
#### some code here
vec1 <- result_from_previous code
vec2 <- result_from_previous code
list(vec1, vec2)
}
Nhưng nó không cho kết quả mong đợi
Khi tôi làm như sau:
result <- foreach(i=1:100, .comb=cbind) %dopar% {
#### some code here
#### some code here
vec1 <- result_from_previous code
vec2 <- result_from_previous code
}
tôi có được chỉ data.frame của vec2
. Có cách nào để trả lại hoặc lưu cả hai kết quả đầu ra?
Cảm ơn