我似乎無法在互聯網上找到任何有關此問題的幫助。{:任務1524失敗 - 「無法打開連接」中的錯誤
我使用'foreach'和'doParallel'軟件包並行運行一個函數。該函數將訓練好的模型和兩個數據幀作爲輸入,進行預測,然後對其中一個變量的值進行混洗,並再次進行預測。它計算每個變量的RMSE,並返回在混洗後增加的RMSE。這需要相當長的時間,所以我必須並行運行它。即便如此,每個型號仍需要2小時左右。
它似乎沒有與函數的代碼本身,也許是輸入,因爲我以前運行它沒有問題,我檢查了我的日誌文件後的錯誤,它處理所有的變量。我有5個模型,我想運行此功能。我首先在一個模型上運行它,並保存結果。現在,它的工作,我想把它應用到其餘的模型。
foreach循環完成處理後,似乎出現錯誤,因爲日誌文件指示分析了所有變量。但我沒有得到的是回溯表明錯誤發生在循環內部。
在此先感謝您對此問題的任何幫助。如果我不清楚任何事情,請告訴我。我正在運行Windows7和R版本3.1。
以下是錯誤:
Error in { : task 1524 failed - "cannot open the connection"
10 stop(simpleError(msg, call = expr))
9 e$fun(obj, substitute(ex), parent.frame(), e$data)
8 foreach(variable = names(newdata), .export = c("calc.rmse", "catf",
"start.timer", "stop.timer"), .combine = "rbind") %dopar%
{
baseline = NULL ... at feature_selection.R#53
7 FUN(c("pH", "Ca", "P", "Sand")[[1L]], ...)
6 lapply(X = X, FUN = FUN, ...)
5 sapply(names(amodels[2:length(amodels)]), analyze.features, newdata = test.data,
newoutcomes = test.outcomes) at script.R#59
4 eval(expr, envir, enclos)
3 eval(ei, envir)
2 withVisible(eval(ei, envir))
1 source("~/%FILEPATH%")
這裏是有問題的函數代碼:
analyze.features = function(newdata, newoutcomes, model.name) {
model = amodels[[model.name]]
file = "data/shuffled_data.csv"
if(!file.exists(file)) {
cat("Creating shuffled data frame...\r\n")
shuffled.data = as.data.frame(sapply(newdata, shuffle))
cat("Writing shuffled data frame to disk...\r\n")
write.csv(shuffled.data, file)
} else {
cat("Reading shuffled data from file...\r\n")
shuffled.data = read.csv(file)
}
# Send output to a log file.
writeLines("", "log.txt")
start.timer("About to enter parallelization...")
cat("Time is: ", format(Sys.time(), "%a %b %d %X %Y"), "\r\n")
output = foreach(variable = names(newdata), .export=c("calc.rmse", "catf", "start.timer", "stop.timer"), .combine="rbind") %dopar% {
baseline = NULL
shuffle = NULL
sdata = newdata
# Write to log file.
catf("Analyzing ", variable)
sdata[[variable]] = shuffled.data[[variable]]
baseline[[variable]] = suppressWarnings(calc.rmse(predict(model, newdata=newdata), newoutcomes))
shuffle[[variable]] = suppressWarnings(calc.rmse(predict(model, newdata=sdata), newoutcomes))
cbind(baseline=baseline, shuffle=shuffle)
}
stop.timer("Total time to analyze features")
save.df(output, paste("RMSE_", model.name, sep=""))
# Reduce list of kept features.
keep = row.names(output)[which(output[,2] - output[,1] > 0)]
rm(output, shuffled.data)
beep(1)
return(keep)
}