[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