无法使用外部功能R6访问内部功能的对象

时间:2020-05-04 08:54:56

标签: r function r6

我有一个R6类,其代码如下

# Cutting out lots of code and only putting in relevant lines
public(
   function1 <- function(){
      var <- xyz$abc
   },

  function2 <- function(){
     xyz <- blah blah
     z <- function1()
  }
)

在调用function2时,我在function1中遇到一个错误,说即使xyz在function2中分配了,但在function1之前调用了xyz

请让我知道我是否正确理解了它以及如何解决它。

1 个答案:

答案 0 :(得分:0)

对于“传统” R函数,函数评估环境的父级是调用环境。

对于R6功能,这是不相同的。方法的评估环境的父级是一个封闭self变量的环境,该变量可以访问对象属性。

您可以通过添加

进行测试
print(ls(parent.env(environment()))) in your method.

这意味着您无权访问xyz中的function1变量。您必须使用公共或私有变量,或将其作为参数传递给函数。

通过这种方式,您还必须在self$之前加入function1(self$function1())的调用