Używam metody setMethod do przesłonięcia funkcji "podsumowania" dla obiektów różnych klas.R Programowanie: użycie metody setMethod do zastąpienia funkcji "podsumowania" dla grupy klas
Początkowo użyłem tego podejścia:
setMethod('summary', "class_1",
function(object, ...) {
#code for class_1 summary here...
}
)
setMethod('summary', "class_2",
function(object, ...) {
#code for class_2 summary here...
}
)
setMethod('summary', "class_3",
function(object, ...) {
#code for class_3 summary here...
}
)
... i tak dalej dla każdej klasy.
Jednak w sumie istnieje 12 różnych klas, więc kod stał się bardzo powtarzalny. Chcąc uniknąć takich powtórzeń, stworzyłem funkcję zawierający nazwy Klasa:
all_classes = function() {
c("class_1", "class_2", "class_3") #and so on for each class
}
Następnie użyłem lapply:
lapply(
1:length(all_classes()),
function(k)
setMethod('summary', all_classes()[k],
function(object, ...) {
#code here...
}
)
)
To działa, ale chciałbym wiedzieć, czy istnieje lepszy sposób osiągnięcia mojego celu, polegającego na zwartym tworzeniu funkcji "podsumowania" dla każdej klasy.
Dzięki,
John.
Dzięki @Martin. Znalazłem również inne rozwiązanie, używając setClassUnion ("groupName", c ("class_1", "class_2", "class_3")) itd., A następnie definiując funkcję podsumowania dla "groupName". –