Foreach 循环 - { 中的错误:任务 1 失败 - "object not found"

Foreach Loop - Error in { : task 1 failed - "object not found"

我是 R 编程的新手,但我正在尝试学习并行计算和 foreach 的使用。

不过,在我的例子中,我需要循环各种可能性的组合,以找到最佳 MAPE 和与之相关的最佳变量。

我开始做嵌套 for 循环,但是有 180k 行并试图找到 3 个变量的最佳组合 运行 连续 2 天而且它没有停止。

此代码仅适用于 2 个变量,但我认为您可以理解其中的逻辑。

for (i in names(df3)) {
  for (j in names(df3)) {
  name4 = names(df3["DiasAusencia"])

  if (i != name4 && j != name4 && i != j) {
    df4 = df3[, c(i, j, "DiasAusencia")]
    H = holdout(df4$DiasAusencia, ratio = 2 / 3)
    Fi = fit(DiasAusencia ~ ., df4[H$tr,], model = "svm")
    testDf = df4[H$ts,]
    P = predict(Fi, testDf)
    MAE = mmetric(testDf$DiasAusencia, P, metric = "MAE")
    MAPE = mmetric(testDf$DiasAusencia, P, metric = "MAPE")
    res = cbind(testDf, predicted = P, MAE, MAPE)

    if (MAPE < BESTMAPE) {
      BESTMAPE = MAPE
      bestres = res
    }
    }
  }
}

所以我查看了 foreach 文档并尝试将其应用于此问题,因此我可以 运行 所有可能的组合,但到目前为止没有成功。这是我的 foreach 代码:

svm3 = function(var1, var2){
  if (var1 != name4 && var2 != name4 && var1 != var2) {
    df4 = df3[, c(var1, var2, "DiasAusencia")]
    H = holdout(df4$DiasAusencia, ratio = 2 / 3)
    Fi = fit(DiasAusencia ~ ., df4[H$tr,], model = "svm")
    testDf = df4[H$ts,]
    P = predict(Fi, testDf)
    MAE = mmetric(testDf$DiasAusencia, P, metric = "MAE")
    MAPE = mmetric(testDf$DiasAusencia, P, metric = "MAPE")
    res = cbind(testDf, predicted = P, MAE, MAPE)

    return(MAPE)
  }
}

sol = foreach(i=1:ncols, j=1:ncols, .combine = rbind, .packages="rminer")%dopar%{
  var1 = names(df3[i])
  var2 = names(df3[j])
  name4 = names(df3["DiasAusencia"])

  svm3(var1, var2)

  tmp = matrix(MAPE, ncol = ncols)

  return(tmp)
} 

这是我得到的错误

Error in { : task 1 failed - "object 'MAPE' not found"

希望大家能帮我解决这个问题!

提前谢谢你。

您没有将 svm3 中的 return 分配给任何东西:

  svm3(var1, var2)

  tmp = matrix(MAPE, ncol = ncols)

所以上面第二行没有叫MAPE的东西。

 MAPE = svm3(var1, var2) 

应该修复它。