我正在尝试在 R 中创建一个简单的参考类。这是我的代码(R 初学者):
MyClass <- setRefClass("MyClass",
fields = list(a = "numeric",
b = "numeric"),
methods = list(
initialize <- function(){
print("Initializing")
a <<- 1
b <<- 2
},
printValues <- function(){
print(a)
print(b)
}
)
)
a <- MyClass$new()
a$printValues()
这会对最后一行 a$printValues 产生以下错误:
Error in envRefInferField(x, what, getClass(class(x)), selfEnv) :
"printValues" is not a valid field or method name for reference class “MyClass”
另外,初始化方法没有被调用?
有人能指出我的问题出在哪里吗?提前谢谢了。
The methods
论证setRefClass
需要是一个命名列表。问题是您正在使用赋值运算符<-
代替=
定义您的列表时。查看之间的区别
list(a = 1, b = 2)
# $a
# [1] 1
#
# $b
# [1] 2
它返回一个命名列表和
list(a <- 1, b <- 2)
# [[1]]
# [1] 1
#
# [[2]]
# [1] 2
这创造了a
and b
在您的环境中并返回一个未命名列表。
因此,在传递方法时,您需要使用=
:
methods = list(initialize = function [...],
printValues = function [...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)