Добавить аргументы к классу s4 - PullRequest
0 голосов
/ 13 апреля 2019

Предположим, кто-то забывает установить 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 Ответ

1 голос
/ 15 апреля 2019

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

...