Как присвоить значения слотам при создании класса в R - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь создать новый класс, который будет автоматически генерировать значения своих слотов, если эти значения не указаны явно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...