相关疑难解决方法(0)

R:foreach循环如何找到应该调用的函数?

当我使用%dopar%调用自定义函数的foreach循环(使用)时,我遇到了问题.使用Linux时没有真正的问题,但是当我使用Windows时,无法找到自定义的功能.很难用文字解释这个问题,所以我写了一个小例子来展示它.假设我有三个简单函数的集合,其中FUN2(using %do%)和FUN3(using %dopar%)调用第一个函数(FUN):

FUN <- function(x,y,z) { x + y + z }
FUN2 <- function(a, b) {
  foreach(i=1:3) %do% FUN(i, a, b)
}
FUN3 <- function(a, b) {
  foreach(i=1:3) %dopar% FUN(i, a, b)
}
Run Code Online (Sandbox Code Playgroud)

这些函数存储在一个名为的脚本中foreach_testfunctions.R.在另一个脚本(foreach.test)中我发布了这些函数,使用library(doParallel)并尝试使用这些函数.首先我用Linux做,一切正常:

source("foreach_testfunctions.R")
a <- 2
b <- 3
library(doParallel)
registerDoParallel()

foreach(i=1:3) %do% FUN(i, a, b)    ## works fine
FUN2(a, b)                          ## works fine
foreach(i=1:3) %dopar% FUN(i, a, b) ## …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r mpi

18
推荐指数
1
解决办法
8902
查看次数

如何在R中并行化双循环?

我一直在尝试并行化我的代码,因为目前我正在使用双循环来记录结果.我一直试图看看如何在R中使用SNOW和doParallel包来做到这一点.

如果您想要一个可复制的示例,请使用

residual_anomalies <- matrix(sample(c('ANOMALY','NO SIGNAL'),300,replace=T),nrow=100)
Run Code Online (Sandbox Code Playgroud)

而不是使用这三行

inputfile <- paste0("simulation_",i,"_",metrics[k],"_US.csv")
data <- residuals(inputfile)

residual_anomalies <- conceptdrift(data,length=10,threshold=.05)
Run Code Online (Sandbox Code Playgroud)

在嵌套的for循环中.整个代码如下.

source("GetMetrics.R")
source("slowdrift_resampling_vectorized.R")

metrics <- unique(metrics)
num_metrics <- length(metrics)

f1_scores_table_raw = data.frame(matrix(ncol=10,nrow=46))
f1_scores_table_pred = data.frame(matrix(ncol=10,nrow=46))

rownames(f1_scores_table_raw) <- metrics
colnames(f1_scores_table_raw) <- paste0("Sim",1:10)

rownames(f1_scores_table_pred) <- metrics
colnames(f1_scores_table_pred) <- paste0("Sim",1:10)


for(k in 1:num_metrics){

  for(i in 1:10){
    #inputfile <- paste0("simulation_",i,"_",metrics[k],"_US.csv")
    #data <- residuals(inputfile)

    #residual_anomalies <- conceptdrift(data,length=10,threshold=.05)

    #the above is how I get the data frame but I'll create another one for reproducibility.
    residual_anomalies <- as.data.frame(matrix(sample(c('ANOMALY','NO SIGNAL'),300,replace=T),nrow=100))
    names(residual_anomalies) <- …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r

1
推荐指数
1
解决办法
2236
查看次数

标签 统计

foreach ×2

parallel-processing ×2

r ×2

mpi ×1