Per iniziare, ti darò un esempio con S3
classi:
# 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)))
Ora, è possibile FUNCTION- sovraccaricare le funzioni interne, ad esempio, la funzione length
come classe (è possibile anche operator-overload
):
length.S3_class <- function(x) sapply(x, length)
# which allows you to do:
length(S3_obj)
# x y
# 10 10
Oppure, in alternativa, si può avere la propria funzione, con qualsiasi nome, in cui è possibile controllare se l'oggetto è di classe S3_class
e fare qualcosa:
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
E 'un po' difficile da spiegare S4 (come S3) perché ci sono un bel po 'di termini e cose da sapere (non sono difficili, solo diversi). Ti suggerisco di passare attraverso i collegamenti forniti sotto i commenti per quelli (e anche per S3, dato che il mio scopo qui era di mostrarti un esempio di come è fatto).
Forse si dovrebbe leggere la sezione "programmazione orientata agli oggetti" del DevTools wiki: https: //github.com/hadley/devtools/wiki – juba
R ha i concetti di 'S3',' S4' an' R5' di OOP. Dovrai sceglierne uno e poi definire le tue funzioni (S3) o metodi (S4, R5). Inizia [** qui **] (https://github.com/hadley/devtools/wiki/S3) – Arun
... correlati: http://stackoverflow.com/questions/9521651/r-and-object-oriented -programmazione –