【发布时间】:2023-04-08 08:50:01
【问题描述】:
我正在尝试创建一个新类,如果未明确给出这些值,它将自动生成其插槽的值。
这是我的 setClass 代码:
TestClass <- setClass(
"TestClass",
slots = c( names = "character",
values = "numeric"
),
validity = function(object) {
if (length(object@values) != length(object@names) ) {
warning("The amount of parameter values is not equal to the amount of parameter names. All parameter values have been set to 1.")
object@values <- rep(1, length(object@names))
} else {
object@values <- as.numeric(object@values)
}
}
)
如果未提供值,则目标是让 TestClass 类始终为“值”槽生成 1 的向量。
当我运行代码时:
test <- TestClass(names = c("a", "b"))
我收到以下错误:
Error in validObject(.Object) : invalid class “TestClass” object: 1: 1
invalid class “TestClass” object: 2: 1
In addition: Warning message:
In validityMethod(object) :
The amount of parameter values is not equal to the amount of parameter names. All parameter values have been set to 1.
编辑:我知道我可以在 setClass 中使用“原型”来创建我的默认值。但正如您所看到的,我正在尝试自我引用并检查为类参数提供的值是否满足某些条件,如果不满足,则通过为它们分配值来覆盖输入。
【问题讨论】:
标签: r