我有两个函数。一个用于训练分类器,另一个用于预测测试数据。如果我逐步运行预测函数,一切正常,但是如果我直接调用预测函数,就会出现错误。由于手动编译函数代码时没有错误,我无法知道发生了什么。我已经将这两个函数和数据上传到了Github。你可以在这里访问
modelFit=mdp(Class = dades[,1],data=dades[,-1],lambda = 1,info.pred = T)predict.mdp(modelFit, dades[1:5,-1])Error in D[row, i] : 下标超出范围
感谢你能提供的任何帮助
回答:
我能看到的原因是,在D[row, i]
中,变量row
超出了D的行数。row
本身是从vec.new
派生出来的:for(row in vec.new)
这部分是罪魁祸首:
start=dim(D)[1]vec.new=(start+1):(start+dim(newdata)[1])
vec.new
从nrow(D)+1
开始,所以即使是第一个元素实际上也超出了D的大小。
你可以在代码中插入cat(row)
来查看。
我想你需要重新考虑start
应该是什么值。