我運行一個預測在合適類似於是尖指南中找到:如何調試像錯誤:「暗淡(X)必須有一個積極的長度」與插入符號
predictions <- predict(caretfit, testing, type = "prob")
但我得到的錯誤:
Error in apply(x, 1, paste, collapse = ",") :
dim(X) must have a positive length
我想知道1)一般的方法來診斷這些錯誤是壞投入這樣或2)爲什麼我的代碼失敗函數的結果。
1) 所以看錯誤這是'X'。哪個參數是x?顯然,第一個是「適用」的,但是預測中哪個論點最終通過了?縱觀回溯():
10: stop("dim(X) must have a positive length")
9: apply(x, 1, paste, collapse = ",")
8: paste(apply(x, 1, paste, collapse = ","), collapse = "\n")
7: makeDataFile(x = newdata, y = NULL)
6: predict.C5.0(modelFit, newdata, type = "prob")
5: predict(modelFit, newdata, type = "prob") at C5.0.R#59
4: method$prob(modelFit = modelFit, newdata = newdata, submodels = param)
3: probFunction(method = object$modelInfo, modelFit = object$finalModel,
newdata = newdata, preProc = object$preProcess)
2: predict.train(caretfit, testing, type = "prob")
1: predict(caretfit, testing, type = "prob")
現在,這個問題很容易解決,如果我可以通過以下方式與代碼和理解的問題,而不是這些常規錯誤。我可以使用這個追溯到C5.0.R#59的代碼追蹤代碼。 (它看起來像有沒有辦法讓每一絲行號?)我可以儘量遵循這個代碼,因爲這59行,然後(我認爲)的預測功能上線44:
但在此之後,我不確定邏輯在哪裏流動。我沒有在插入符號源中的任何地方看到'makeDataFile',或者如果它在另一個包中,它是如何到達那裏的。我也嘗試過Rstudio調試,調試()和瀏覽器()。沒有提供我期望的其他語言的堆棧跟蹤。任何有關如何在不知道msg錯誤意味着什麼時遵循代碼的建議?
2)作爲用於我的特定輸入,「caretfit」簡單地是一個符的擬合結果和測試數據是300萬行乘59列:
fitcontrol <- trainControl(method = "repeatedcv",
number = 10,
repeats = 1,
classProbs = TRUE,
summaryFunction = custom.summary,
allowParallel = TRUE)
fml <- as.formula(paste("OUTVAR ~",paste(colnames(training[,1:(ncol(training)-2)]),collapse="+")))
caretfit <- train(fml,
data = training[1:200000,],
method = "C5.0",
trControl = fitcontrol,
verbose = FALSE,
na.action = na.pass)
你跟RStudio工作? – Christoph
我正在使用nvim-r和vim。但我願意與RStudio一起用於調試目的。其實我一直在試圖與RStudio調試,問題是,當我試圖通過我的代碼步驟,要麼1)獲取似乎永遠不會完成2)不具備某些特定文件的源一步,我得到一個錯誤到這種效果(抱歉不記得錯誤) – Joe
如果你提供一個可重複的例子,我可以看看它... – Christoph