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)
。此问答可能会有所帮助: