You could add a flag to your class and check if it set as a first thing in the validity as in the example below:
setClass("foo", representation("numeric", .validate="logical"), prototype(.validate=TRUE), validity=function(object) { if ([EMAIL PROTECTED]) TRUE ## do lengthy checks } ) setGeneric("foo", function(x, ...) standardGeneric("foo")) setMethod("foo", signature(x="numeric"), function(x, ..., validate=TRUE) new("foo", ..., .validate=validate) ) a = foo(runif(10), validate=FALSE) ## or b = new("foo", runif(10), .validate=FALSE) ## or do validate d = foo(runif(10)) e = new("foo", runif(10)) The downside is that you carry unnecessary information around in your objects. Best, Dr Oleg Sklyar Technology Group Man Investments Ltd +44 (0)20 7144 3803 [EMAIL PROTECTED] > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Robin Hankin > Sent: 07 May 2008 15:44 > To: R-devel@r-project.org > Subject: [Rd] optional setValidity() > > Hi > > > Suppose I have an S4 class "foo" and a validity checking > function ".checkfoo()": > > setClass("foo", representation=representation("numeric")) > setValidity("foo" , .checkfoo) > > is fine; in my application, .checkfoo() verifies that a bunch > of necessary conditions are met. > > But .checkfoo() is very time consuming and I want to give > users the option of switching it off. > > Most foo objects that one deals with fall into two or three > standard types and in these cases one doesn't need to execute > .checkfoo() because one can show algebraically that the > conditions are automatically met. > > But OTOH, I want the check to be performed "by default" to > stop anyone (me) from being too clever and defining a > non-standard foo object that doesn't meet .checkfoo(). > > What is best practice here? > > Are there any examples I could copy? > > > > > > -- > 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 > ********************************************************************** The contents of this email are for the named addressee(s...{{dropped:22}} ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel