并行和foreach包的排列错误;任务1失败-“;找不到“;错误
我不知道如何解决这个问题。我已经尝试在这里添加并行和foreach包的排列错误;任务1失败-“;找不到“;错误,r,permutation,R,Permutation,我不知道如何解决这个问题。我已经尝试在这里添加.packages=“foreach”,但无法使其工作。非常感谢您的帮助 #################### install.packages("doParallel") install.packages("doSNOW") install.packages("doParallel") install.packages("doMPI") install.packages("tidyverse") # Load packages ------
.packages=“foreach”
,但无法使其工作。非常感谢您的帮助
####################
install.packages("doParallel")
install.packages("doSNOW")
install.packages("doParallel")
install.packages("doMPI")
install.packages("tidyverse")
# Load packages -----------------------------------------------------------
rm(list = ls())
library(tidyverse)
library(foreach)
library(doSNOW)
library(doMPI)
library(doParallel)
registerDoParallel()
# Single iteration function -------------------------------------------------------------
one_iteration <- function(snps, estuaries) {
sim_snps <- matrix(data = NA, nrow = snps, ncol = estuaries) %>%
as.data.frame(.)
for (i in 1:snps) {
sim_snps[i, ] <- sample(x = c(0,0,0, 1,1,1), size = estuaries, replace = F)
}
nbig <- rowSums(sim_snps)
c(sum(nbig == 3), sum(nbig == 2), sum(nbig == 1), sum(nbig == 0))
}
# Permutations function ---------------------------------------------------
doNullPermutations <- function(nit, snps, estuaries) {
start <- summary(proc.time())[3] # get time at start of function
x <- foreach(iteration = 1:nit, # do 100 iterations
.combine = rbind) %dopar% one_iteration(snps, estuaries)
print(summary(proc.time())[3] - start) # print time elapse (time at end minus the start)
return(x)
}
# 3 estuaries -------------------------------------------------------------
perms_res_3est_10kperm <- doNullPermutations(1, snps = 20083, estuaries = 3)
**Error in one_iteration(snps, estuaries) :
task 1 failed - "could not find function "one_iteration""
Called from: e$fun(obj, substitute(ex), parent.frame(), e$data)**
####################
安装软件包(“doParallel”)
install.packages(“doSNOW”)
安装软件包(“doParallel”)
install.packages(“doMPI”)
安装程序包(“tidyverse”)
#加载包-----------------------------------------------------------
rm(list=ls())
图书馆(tidyverse)
图书馆(foreach)
图书馆(doSNOW)
图书馆(doMPI)
图书馆(双平行)
registerDoParallel()
#单迭代函数-------------------------------------------------------------
一次迭代下面的代码应该可以工作。出现此错误的原因是foreach函数在新会话中创建了新的worker,而在这些会话中,不会导出主会话中的函数和包。因此请注意.export
参数和.packages
参数
# Permutations function ---------------------------------------------------
doNullPermutations <- function(nit, snps, estuaries) {
x <- foreach(iteration = 1:3, # do 100 iterations
.combine = rbind,
.export = ls(globalenv()),
.packages = 'tidyverse') %dopar% one_iteration(snps, estuaries)
return(x)
}
perms_res_3est_10kperm <- doNullPermutations(1, snps = 20083, estuaries = 3)
#置换函数---------------------------------------------------
doNullPermutations下面的代码应该可以工作。出现此错误的原因是foreach函数在新会话中创建了新的worker,而在这些会话中,不会导出主会话中的函数和包。因此请注意.export
参数和.packages
参数
# Permutations function ---------------------------------------------------
doNullPermutations <- function(nit, snps, estuaries) {
x <- foreach(iteration = 1:3, # do 100 iterations
.combine = rbind,
.export = ls(globalenv()),
.packages = 'tidyverse') %dopar% one_iteration(snps, estuaries)
return(x)
}
perms_res_3est_10kperm <- doNullPermutations(1, snps = 20083, estuaries = 3)
#置换函数---------------------------------------------------
多努尔置换