【问题标题】:Evaluation nested too deeply when using reference class with active binding使用具有活动绑定的引用类时,求值嵌套太深
【发布时间】:2020-01-29 17:28:18
【问题描述】:

可重现的例子:

bed2_RC <- methods::setRefClass(

  "bed2",

  fields = list(
    .fam = "data.frame",

    #### Active bindings
    fam = function() {
      if (ncol(.self$.fam) == 0) {
        .self$.fam <- datasets::iris
      }
      .self$.fam
    },

    nrow = function() print(nrow(.self$fam))
  )
)

bed2 <- function() new(Class = "bed2")
bed2()

错误信息:

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?

我不明白为什么这里会发生无限循环。

【问题讨论】:

    标签: r reference-class


    【解决方案1】:

    嗯,当使用nrow(.self$fam)时,它实际上试图调用主动绑定$nrow(),而不是基函数。替换为 base::nrow(.self$fam) 可以正常工作。

    【讨论】:

    • @Oliver 我无法在两天前验证我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多