Добавление аргументов в класс s4

#r #s4

#r #s4

Вопрос:

Предположим, кто-то забывает указать validity в определении класса s4, как можно «добавить» этот аргумент, не переписывая весь класс.

Иллюстрация:

 setClass("test",slots = c(Taken="numeric",Data="data.frame"))
x<-new("test",Taken=123,Data=data.frame(GPA=0.02,Score=0.01))
  

Теперь предположим, что я хотел бы проверить правильность:

 validity.test<-function(object){
  if(!all(sapply(object@Data,is.numeric))){
    print("Data must be all numeric")

  } else print(TRUE)

}
  

Я мог бы просто позвонить validity.test(x) .

Однако, как мне установить его test без перезаписи test ?! Мы работаем в предположении, что кто-то новичок (например, я) в s4 и поэтому, вероятно, забудет это сделать. Если в скрипте так много строк, это может легко стать утомительным. Заранее спасибо!

Ответ №1:

Существует функция, которая делает именно это; она вызывается setValidity . Просто вызовите его с именем вашего класса и желаемой функцией проверки достоверности.