我有一个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
请让我知道我是否正确理解了它以及如何解决它。
答案 0 :(得分:0)
对于“传统” R函数,函数评估环境的父级是调用环境。
对于R6功能,这是不相同的。方法的评估环境的父级是一个封闭self
变量的环境,该变量可以访问对象属性。
您可以通过添加
进行测试print(ls(parent.env(environment()))) in your method.
这意味着您无权访问xyz
中的function1
变量。您必须使用公共或私有变量,或将其作为参数传递给函数。
通过这种方式,您还必须在self$
之前加入function1(self$function1()
)的调用