Oto przykład, aby zacząć. Po zapoznaniu się z podstawowymi metodami wywoływania metod S3 zapoznaj się z dowolnymi metodami drukowania zwróconymi przez methods("print")
, aby zobaczyć, jak możesz uzyskać bardziej interesujące style drukowania.
## Define a print method that will be automatically dispatched when print()
## is called on an object of class "myMatrix"
print.myMatrix <- function(x) {
n <- nrow(x)
for(i in seq_len(n)) {
cat(paste("This is row", i, "\t: "))
cat(x[i,], "\n")
}
}
## Make a couple of example matrices
m <- mm <- matrix(1:16, ncol=4)
## Create an object of class "myMatrix".
class(m) <- c("myMatrix", class(m))
## When typed at the command-line, the 'print' part of the read-eval-print loop
## will look at the object's class, and say "hey, I've got a method for you!"
m
# This is row 1 : 1 5 9 13
# This is row 2 : 2 6 10 14
# This is row 3 : 3 7 11 15
# This is row 4 : 4 8 12 16
## Alternatively, you can specify the print method yourself.
print.myMatrix(mm)
# This is row 1 : 1 5 9 13
# This is row 2 : 2 6 10 14
# This is row 3 : 3 7 11 15
# This is row 4 : 4 8 12 16
Być może patrz "? Metody" - są przykłady w dolnej części strony. – BenBarnes
Zachowaj ostrożność, jeśli próbujesz zmienić metodę drukowania obiektu klasy S3 dostarczoną przez pakiet z NAMESPACE, który jest wszystkim pakietem z nowoczesną wersją R. Jeśli napiszesz nową metodę 'print()' dla istniejącej class, możesz potrzebować 'assignInNamespace (....)' swojej lokalnej wersji metody drukowania. –
Dzięki za wskazówkę Ben i końcówkę Gavin. –