On Mar 26, 2008, at 12:04 PM, Robin Hankin wrote: > Hi > > How do I specify an S4 class with a slot that is potentially numeric, > but NA > by default? I want the slot to be NA until I calculate its value > (an expensive operation, not needed for all applications). When > its value is > known, I will create a new object with the correct value inserted in > the slot. > > I want "NA" to signify "not known". > > My attempt fails because NA is not numeric: > >> > setClass > ("foo > ",representation=representation(x="numeric"),prototype=list(x=NA)) > Error in makePrototypeFromClassDef(properties, ClassDef, immediate, > where) : > in making the prototype for class "foo" elements of the prototype > failed to match the corresponding slot class: x (class “numeric” ) >> >
Why don't you just initialize x with the correct type then? NA is logical, so either use as.numeric(NA) or NA_real_ (see ?NA) Cheers, S > (the real application has other slots too). I can > use "NaN", which is numeric: > >> > setClass > ("foo > ",representation=representation(x="numeric"),prototype=list(x=NaN)) > [1] "foo" >> > > But this is not the correct sense: to me "NaN" means "not a number" > and I want > the sense to be "not available". > > > > Any advice? > > > > > > -- > Robin Hankin > Uncertainty Analyst and Neutral Theorist, > National Oceanography Centre, Southampton > European Way, Southampton SO14 3ZH, UK > tel 023-8059-7743 > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel