[R] FW: S4 classes, creating in C
Matthias Burger
ml-r-help at epigenomics.com
Mon Jun 23 19:38:57 CEST 2003
Hi Laurence,
Laurence Kell FM CEFAS wrote:
>
[...]
> LUdecomposition is an S4 class defined as
>
> setClass("LUdecomposition", representation(a="matrix", pivot = "integer"))
>
> This works in R 1.7.0 and R 1.7.1 but if I initialise any of the slots
>
> setClass("LUdecomposition", representation(a="matrix", pivot = "integer"),
> prototype=list(pivot = NA) )
>
> then I get the following error message in R 1.7.1 but not R 1.7.0
>
> Error in makePrototypeFromClassDef(properties, ClassDef, immediate) :
> In making the prototype for class "LUdecomposition" elements of the
> prototype
> failed to match the corresponding slot class: pivot (class " integer
> ")
>
> Why can I no longer use the prototype to set the default values?
just tried your example in R 1.6.2 and it worked. And as you say for R 1.7.1 it
won't.
So take a look at (R 1.7.1)
> setClass("LUdecompositio", representation(a="matrix", pivot = "integer"),
prototype(pivot=NA))
[1] "LUdecompositio"
> lu<-new("LUdecompositio")
Error in makePrototypeFromClassDef(properties, ClassDef, immediate) :
In making the prototype for class "LUdecompositio" elements of the
prototype failed to match the corresponding slot class: pivot (class " integer ")
> setClass("LUdecompositi", representation(a="matrix", pivot = "integer"),
prototype(pivot=as.integer(NA))
+
+ )
[1] "LUdecompositi"
> lu3<-new("LUdecompositi")
> lu3
An object of class "LUdecompositi"
Slot "a":
<0 x 0 matrix>
Slot "pivot":
[1] NA
> is(lu3 at pivot)
[1] "integer" "vector" "numeric"
So providing an explicit cast in the prototype cures the problem.
HTH,
Matthias
> Laurence Kell
> CEFAS Lowestoft Laboratory
> Pakefield Road
> Lowestoft, NR33 0HT
> UK
> Tel +44 1502 52 42 57
> Fax +44 1502 52 45 11
> e-mail l.t.kell at cefas.co.uk
>
>
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
--
Matthias Burger
Bioinformatics R&D
Epigenomics AG www.epigenomics.com
Kleine Pr?sidentenstra?e 1 fax: +49-30-24345-555
10178 Berlin Germany phone: +49-30-24345-0
More information about the R-help
mailing list