Um Ihnen den Einstieg, ich werde ein Beispiel mit S3
Klassen geben:
# create an S3 class using setClass:
setClass("S3_class", representation("list"))
# create an object of S3_class
S3_obj <- new("S3_class", list(x=sample(10), y=sample(10)))
Jetzt können Sie funk- Überlasten Sie interne Funktionen, zum Beispiel length
Funktion zu Ihrer Klasse als (Sie können auch operator-overload
):
length.S3_class <- function(x) sapply(x, length)
# which allows you to do:
length(S3_obj)
# x y
# 10 10
Oder alternativ können Sie Ihre eigene Funktion mit beliebigen Namen haben, wo Sie können überprüfen, ob das Objekt der Klasse ist S3_class
und etwas tun:
len <- function(x) {
if (class(x) != "S3_class") {
stop("object not of class S3_class")
}
sapply(x, length)
}
> len(S3_obj)
# x y
# 10 10
> len(1:10)
# Error in len(1:10) : object not of class S3_class
Es ist ein bisschen schwer S4 zu erklären (wie S3), da es ziemlich viele Begriffe und Dinge gibt, die man kennen muss (sie sind nicht schwierig, nur anders). Ich schlage vor, Sie gehen durch die Links unter Kommentare für diese (und auch für S3, da mein Zweck hier war, Ihnen ein Beispiel zu zeigen, wie es gemacht wird).
Vielleicht sollten Sie die "objektorientierte Programmierung" des devtools Wiki lesen: https: //github.com/hadley/devtools/wiki – juba
R hat 'S3',' S4' und 'R5' Konzepte von OOPs. Sie müssen eine auswählen und dann Ihre eigenen Funktionen (S3) oder Methoden (S4, R5) definieren. Start [** hier **] (https://github.com/hadley/devtools/wiki/S3) – Arun
... verwandt: http://stackoverflow.com/questions/9521651/r-und-objektorientiert -Programmierung –