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)
应该修复它。
Altough现在我有这个错误“'数据'必须是矢量类型,是'NULL'”。我知道我的MAPE是每次循环迭代并添加到“tmp”矩阵时应该生成的数字。我如何使它成为矢量? –
你很幸运我发现了第一个错误 - 你现在应该学会如何制作一个可重复的例子,然后问一个能产生这个新错误的新问题! – Spacedman