r - 使用带有主动绑定(bind)的引用类时,求值嵌套太深

标签 r reference-class

可重现的示例:

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=)?

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

最佳答案

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

关于r - 使用带有主动绑定(bind)的引用类时,求值嵌套太深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58167547/

相关文章:

r - 是什么使得这两个 R 数据帧不相同?

在 R 中使用新的 ID 列复制数据集

r - 通缉 : facet_grid - facet_wrap hybrid solution

r - 使用 R 中的网格绘图系统制作可调整大小的图

r - 如何在 R 中创建虚拟引用类?

r - 在检索 S4 引用类的字段值时避免考虑封闭帧

r - 使用 ggplot 2 创建李克特量表排序图