R变量在(全局)分配后发生变化

时间:2014-07-24 07:40:31

标签: r global-variables

调试代码时遇到问题。代码如下所示。 所以,在我的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)
}

1 个答案:

答案 0 :(得分:1)

browser()放在modelPerformance行之后,重新运行函数的定义并运行该函数。你将“坐在”lapply调用内部,你将能够逐步浏览每一行,检查对象并查看正在发生的事情。这里描述了广泛的调试选项:General suggestions for debugging in R