gpt4 book ai didi

R 引用类问题

转载 作者:行者123 更新时间:2023-12-04 14:16:26 26 4
gpt4 key购买 nike

我正在尝试在 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”

此外,初始化方法没有被调用?

有人可以指出我的问题在哪里吗?提前谢谢了。

最佳答案

methods论据 setRefClass需要是一个命名列表。问题是您正在使用赋值运算符 <-而不是 =定义列表时。查看两者的区别

list(a = 1, b = 2)
# $a
# [1] 1
#
# $b
# [1] 2

它返回一个命名列表和
list(a <- 1, b <- 2)
# [[1]]
# [1] 1
#
# [[2]]
# [1] 2

这创建了 ab在您的环境中并返回一个未命名的列表。

所以在传递你的方法时,你需要使用 = :
methods = list(initialize = function [...],
printValues = function [...]

关于R 引用类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com