我正在处理一个以前从未遇到过的新问题(以前运行良好)。 如果我以前没有从实例范围之外运行过类的方法,则R显示错误。 我不知道如何表达我的问题,请阅读示例:
> setRefClass(
+ Class = "testClass",
+ methods = list(
+ test = function(){
+ print("test")
+ }
+ )
+ )
> instance = new("testClass")
> eval(substitute(test()), instance)
Error in test() : could not find function "test"
> # WHY DID I GET ERROR !!!!
> instance$test()
[1] "test"
> eval(substitute(test()), instance)
[1] "test"
> # IF I RUN THE METHODE ONCE FROM OUTSIDE, I DON'T GET ERROR!!!!
答案 0 :(得分:0)
经过一些试验,看起来R应该在使用它之前将方法安装到Class上。
但是,我可以在类field
中定义一个函数,并立即使用它。
这里是一个例子:
> setRefClass(
+ Class = "testClass",
+ fields = list (
+ test = "function"
+ ),
+ methods = list(
+ initialize = function(){
+ test <<- function(){
+ print("test")
+ }
+ }
+ )
+ )
> instance = new("testClass")
> eval(substitute(test()), instance)
[1] "test"
我不确定到底有什么区别,但是它能按我的预期工作。