Napisałem pakiet za pomocą klas S4 i chciałby korzystać z funkcji rbind, cbind z tych zdefiniowanych klas.Prawidłowe sposobem użycia cbind, rbind z klas S4 w pakiecie
Ponieważ nie wydaje się być możliwe do zdefiniowania rbind
i cbind
bezpośrednio jako metody S4 zdefiniowałem rbind2
i cbind2
zamiast:
setMethod("rbind2", signature(x="ClassA", y = "ANY"),
function(x, y) {
# Do stuff ...
})
setMethod("cbind2", signature(x="ClassA", y = "ANY"),
function(x, y) {
# Do stuff ...
})
Od ?cbind2
dowiedziałem się, że te funkcje muszą być aktywowane za pomocą methods:::bind_activation
zastąpić rbind i cbind z bazy.
włączyłem połączenia w pliku pakiet R/zzz.R przy użyciu funkcji .onLoad
:
.onLoad <- function(...) {
# Bind activation of cbind(2) and rbind(2) for S4 classes
methods:::bind_activation(TRUE)
}
To działa zgodnie z oczekiwaniami. Jednak działające CMD R sprawdzić Jestem teraz otrzymuję następujący notatka ponieważ używam unexported funkcję metod:
* checking dependencies in R code ... NOTE
Unexported object imported by a ':::' call: 'methods:::bind_activation'
See the note in ?`:::` about the use of this operator.
Jak mogę pozbyć się notatki i jaki jest właściwy sposób definiować metody cbind i rbind dla klas S4 w pakiecie?
Czy mógłbyś dołączyć definicje klas (np. 'SetClass (" ClassA ", ...)') z kilku klas S4, do których próbujesz dodać metody 'rbind' i' cbind'? Ułatwiłoby to opracowanie rozwiązania twojego problemu. – nrussell
Definicje klas nie powinny w tym przypadku mieć znaczenia, ponieważ jest to tylko kwestia wyboru/wysłania metody. Więc możesz użyć dowolnej definicji, takiej jak setClass ("ClassA", reprezentacja (a = "numeryczna")). – user625626
Czy mógłbyś również wyjaśnić, dlaczego "* ... nie wydaje się możliwe zdefiniowanie rbind i cbind bezpośrednio jako metody S4 ..." "- może dodasz swój kod, próbując go zaimplementować? – nrussell