调试代码时遇到问题。代码如下所示。 所以,在我的lapply函数中出现了一些问题。为了确定错误,我将三个参数写入全局变量。但是下面的内容是:列表长度(在第一次打印内)总是3(应该是),在第二次打印中,foo的长度为3.完美。 在这些行之后,错误发生,执行中断,然后当我看看我的变量foo时,它的长度为4,只有vl变量出现在foo中。 我的代码中没有其他地方的foo分配,这也是我正在使用的唯一全局变量。
我错过了什么?我无法解释自己这种行为。
最诚挚的问候,
马里奥
.evalModel = function(model, vl, params){
print(length(list(model, vl, params)))
foo<<-list(model, vl, params)
print(length(foo))
modelPerformance = lapply(model, function(x){
ruleResults = vector(mode="list", length = length(x) )
for(i in 1:length(x)){
if(class(x[[i]]) == "rule"){
ruleResults[[i]] = .evalRule(x[[i]] , vl, params)
} else{
ruleResults[[i]] = .evalRule(x[[i]]$rule , vl, params)
}
}
ruleResults
})
class(modelPerformance) = "GP-Model"
return(modelPerformance)
}
答案 0 :(得分:1)
将browser()
放在modelPerformance行之后,重新运行函数的定义并运行该函数。你将“坐在”lapply调用内部,你将能够逐步浏览每一行,检查对象并查看正在发生的事情。这里描述了广泛的调试选项:General suggestions for debugging in R