R 参考类按名称添加新变量

问题描述 投票:0回答:1

考虑以下 R 代码:

MyClass <- setRefClass("MyClass",
    fields = list(
    ),
    methods = list(
        initialize = function(x){
            #give new attribute x 
        }
    )
)

my_var_name <- 1
obj <- MyClass$new(x = my_var_name)

我想为

MyClass
添加一个属性。该属性的名称为
my_var_name
,由用户输入指定。需要通过
obj$my_var_name
访问的属性值应等于变量的值,在本例中为
1
。如果这样的事情一般很难做到,我希望至少在构造函数中完成。属性的
class
(在本例中为
numeric
)可以视为已知。

我知道

deparse(substitute())
可以用来提取变量名。但是我如何使用它来定义属性呢?

r class variables reference
1个回答
0
投票

如果您想要动态构造类,那么引用类不是正确的 OO 系统。 要使用参考类来执行此操作,请定义一个子类。

MyClass <- setRefClass("MyClass",
    fields = list(),
    methods = list(initialize = function(x) {})
)

MyChild <- setRefClass("MyChild", contains = "MyClass",
   fields = list(a = "numeric"),
   methods = list(initialize = function(x) a <<- 1)
)

obj <- MyChild(1)

obj$a
## [1] 1
© www.soinside.com 2019 - 2024. All rights reserved.