#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
. Просто вызовите его с именем вашего класса и желаемой функцией проверки достоверности.