Diciamo che voglio definire due classi di classi, Sentence
e Word
. Ogni oggetto parola ha una stringa di caratteri e una parte di discorso (pos). Ogni frase contiene un numero di parole e ha uno slot aggiuntivo per i dati.Come posso far riempire uno slot di più oggetti dello stesso tipo in R?
La classe Word
è semplice da definire.
wordSlots <- list(word = "character", pos = "character")
wordProto <- list(word = "", pos = "")
setClass("Word", slots = wordSlots, prototype = wordProto)
Word <- function(word, pos) new("Word", word=word, pos=pos)
Ora voglio fare una classe Sentence
che può contenere alcuni Word
s ed alcuni dati numerici.
se definisco la classe Sentence
come così:
sentenceSlots <- list(words = "Word", stats = "numeric")
sentenceProto <- list(words = Word(), stats = 0)
setClass("Sentence", slots = sentenceSlots, prototype = sentenceProto)
Poi la frase può contenere solo una parola. Potrei ovviamente definirlo con molti slot, uno per ogni parola, ma poi sarà limitato in lunghezza.
Tuttavia, se io definisco la classe Sentence
in questo modo:
sentenceSlots <- list(words = "list", stats = "numeric")
sentenceProto <- list(words = list(Word()), stats = 0)
setClass("Sentence", slots = sentenceSlots, prototype = sentenceProto)
può contenere quante più parole che voglio, ma lo slot words
può contenere gli oggetti che non sono della classe Word
.
C'è un modo per realizzare questo? Questo sarebbe simile alla cosa C++ in cui è possibile avere un vettore di oggetti dello stesso tipo.
Penso che il mio precedente suggerimento (che ho cancellato), sia buono. In una frase, cambiala in un vettore di parole anziché in una lista di parole. Non faccio molta programmazione OO in R, ma penso che dovrebbe funzionare. – DMT
Non lo interpreta come vettore, ma come lista. Con 'words =" vector "' e 'x <- new (" Frase ")', 'x @ words <- c (Word(), Word(), 3)' non causa errori e rende 'x @ words' una lista. –
comprensibile vero? Perché hai due elementi di tipo Word e uno di tipo numerico? Sarà forzato prima che l'ambientazione abbia luogo. Il 3 corrisponde alle statistiche nell'oggetto frase? – DMT