R 我可以调用一个函数,但可以调用另一个函数';的内部调用找不到该函数

R 我可以调用一个函数,但可以调用另一个函数';的内部调用找不到该函数,r,R,我有一个对象,假设它叫obj。我可以调用一个函数,obj$a(),这样就行了。但是,当我调用内部调用self$a()的obj$b()时,它抛出一个错误,表示找不到a函数。我能做什么?您需要确保函数共享一个环境/在同一个闭包中。您可以将它们封装在一个伪函数中。看看这个例子: gives_error <- list(a = function() { print("Hello from a")

我有一个对象,假设它叫
obj
。我可以调用一个函数,
obj$a()
,这样就行了。但是,当我调用内部调用
self$a()
obj$b()
时,它抛出一个错误,表示找不到
a
函数。我能做什么?

您需要确保函数共享一个环境/在同一个闭包中。您可以将它们封装在一个伪函数中。看看这个例子:

gives_error <- list(a = function() { 
                          print("Hello from a")
                        },
                    b = function(){
                          print("Hello from b")
                          a()
                    })

gives_error$b()


will_work <-
    (function() {
        a = function(){ 
            print("Hello from a")
        }
        b = function(){
            print("Hello from b")
            a()
        }
        list(a = a, b = b)
    })()

will_work$b()

给出了_error您需要确保函数共享一个环境/在同一个闭包中。您可以将它们封装在一个伪函数中。看看这个例子:

gives_error <- list(a = function() { 
                          print("Hello from a")
                        },
                    b = function(){
                          print("Hello from b")
                          a()
                    })

gives_error$b()


will_work <-
    (function() {
        a = function(){ 
            print("Hello from a")
        }
        b = function(){
            print("Hello from b")
            a()
        }
        list(a = a, b = b)
    })()

will_work$b()

gives\u如果您发布了一些代码以使您的问题重现,那么错误可能会有所帮助。据我所知,R的OOP并没有那么花哨。你可能只想用(obj,…do stuff…)
self
在R中并不是一件真正的事情……我对这件事很不了解,但是
obj=in(list(),{a=function(x)2*x;b=function(x,y)a(x)+y}
“工作”,从某种意义上说,我可以做
obj$b(11,22)
。这个Q&A可能会有帮助:如果你发布一些代码使你的问题重现,可能会有帮助。据我所知,R的OOP并没有那么花哨。你可能只想用(obj,…do stuff…)
self
在R中并不是一件真正的事情……我对这件事很不了解,但是
obj=in(list(),{a=function(x)2*x;b=function(x,y)a(x)+y}
“工作”,从某种意义上说,我可以做
obj$b(11,22)
。此问答可能会有所帮助: