Я пытаюсь создать новый класс, который будет автоматически генерировать значения своих слотов, если эти значения не указаны явно.
Вот мой код 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 для слота «values», если значения не предоставлены.
Когда я запускаю код:
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, чтобы создать мои значения по умолчанию.Но, как вы можете видеть, я пытаюсь ссылаться на себя и проверять, соответствуют ли значения, предоставленные для аргументов класса, определенным условиям, а если нет, переопределяют входные данные, присваивая им значения.