调试在R中使用predict()的代码

时间:2014-08-28 20:56:50

标签: r debugging random-forest predict

运行此代码时:

predict(rfm, x[split.idx[[i]], sig_otu], type="prob")

我收到此错误消息:

Error in x[, vname, drop = FALSE] : subscript out of bounds

错误信息是否因错误包围而产生?我已经尝试重新安排括号,添加括号等。但是,我仍然会收到此错误消息。

split.idx是一个8的列表     STR(split.idx)

List of 8

 $ 1: Named int [1:10] 2 3 13 17 34 40 72 70 30 27
  ..- attr(*, "names")= chr [1:10] "01" "09" "017" "025" ...
 $ 2: Named int [1:10] 21 32 67 52 12 55 36 37 24 31
  ..- attr(*, "names")= chr [1:10] "02" "010" "018" "026" ...
 $ 3: Named int [1:10] 49 58 64 8 54 62 1 41 39 35
  ..- attr(*, "names")= chr [1:10] "03" "011" "019" "027" ...
 $ 4: Named int [1:10] 46 59 20 43 47 4 57 76 33 29
  ..- attr(*, "names")= chr [1:10] "04" "012" "020" "028" ...
 $ 5: Named int [1:10] 42 45 69 71 44 38 7 10 9 78
  ..- attr(*, "names")= chr [1:10] "05" "013" "021" "029" ...
 $ 6: Named int [1:10] 15 5 73 61 63 25 28 48 53 14
  ..- attr(*, "names")= chr [1:10] "06" "014" "022" "030" ...
 $ 7: Named int [1:10] 68 6 23 11 65 16 66 26 22 56
  ..- attr(*, "names")= chr [1:10] "07" "015" "023" "031" ...
 $ 8: Named int [1:9] 51 60 74 75 50 19 77 18 79
  ..- attr(*, "names")= chr [1:9] "08" "016" "024" "032" ...

这是变量sig_otu的类型:

str(sig_otu)
Named int [1:56] 12 26 44 50 79 131 144 178 240 253 ...
   - attr(*, "names")= chr [1:56] "" "" "" "" ...

这是分配给rfm的值:

rfm <- randomForest(x[-split.idx[[i]]], sig_otu], y[-split.idx[[i]]])

X是一个带有暗淡[1] 79,1924的大矩阵。

Y是离散因子,长度为79和2级。

我希望我的问题足够明确,可以回答。

i是指我之前在代码中运行的这一行:for(i in 1:k),我设置k = 8.

> dim(x)[2] [1] 1924

> max(sig_otu) [1] 1921

1 个答案:

答案 0 :(得分:0)

对我有用的东西是:

  1. 编辑predict.randomForest函数。为此,请键入randomForest ::: predict.randomForest(我假设已加载randomForest包)。
  2. 重命名功能。例如, myrandomForestpredictfun = prediccion.rf = function(object,newdata,type =“response”,norm.votes = TRUE,       predict.all = FALSE,proximity = FALSE,nodes = FALSE,cutoff,       ......)
  3. 评论包含“x&lt; - x [,vname,drop = FALSE]”的行
  4. 使用新功能获取训练集的预测。