R version 2.15.2 (2012-10-26)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
Voglio fare una classe S4 che utilizzano l'oggetto di output della funzione di nls.lm (pacchetto: minpack.lm) come uno slot:
setOldClass("nls.lm")
setClass (
Class="TestClass",
representation=representation(
lmOutput = "nls.lm",
anumeric = "numeric"
)
)
Ora, se voglio chiamare questa classe in una "funzione di costruzione" posso fare qualcosa di simile questo (corretto?):
myConstructor <- function()
{
return(new("TestClass"))
}
pippo <- myConstructor()
pippo
An object of class "TestClass"
Slot "lmOutput":
<S4 Type Object>
attr(,".S3Class")
[1] "nls.lm"
Slot "anumeric":
numeric(0)
E l'oggetto "pippo" sembra inizializzato correttamente.
Se io uso questo codice invece ho ottenuto un errore:
myConstructor2 <- function()
{
pippo <- new("TestClass", anumeric=1000)
return(pippo)
}
pippo <- myConstructor2()
Error in validObject(.Object) :
invalid class “TestClass” object: invalid object for slot "lmOutput" in class "TestClass": got class "S4", should be or extend class "nls.lm"
sembra che se voglio INIT in new alcuni slot, questo crea problemi con uno slot S3 classe?
Qualsiasi indizio su come evitare questo problema?
Grazie
grazie per la risposta rapida. Appena implementato nel mio codice "reale". L'oggetto è valido ora! – tucano