Foreach循环 - {:任务1失败 - “找不到对象”中的错误

问题描述:

我是R编程新手,但我试图学习并行计算和foreach的使用。Foreach循环 - {:任务1失败 - “找不到对象”中的错误

在我的情况下,我需要循环组合的可能性来找到最好的MAPE和与之相关的最佳变量。

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

这个代码只是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) 
} 

这是错误我得到

错误{:任务1失败 - “对象 'MAPE' 未找到”

希望你们可以帮助我解决这个问题!

预先感谢您。

你并没有使用从svm3到任何回报:

svm3(var1, var2) 

    tmp = matrix(MAPE, ncol = ncols) 

所以没有什么在上面的第二条线叫MAPE

MAPE = svm3(var1, var2) 

应该修复它。

+0

Altough现在我有这个错误“'数据'必须是矢量类型,是'NULL'”。我知道我的MAPE是每次循环迭代并添加到“tmp”矩阵时应该生成的数字。我如何使它成为矢量? –

+0

你很幸运我发现了第一个错误 - 你现在应该学会如何制作一个可重复的例子,然后问一个能产生这个新错误的新问题! – Spacedman