« Return to Thread: optional setValidity()

Re: optional setValidity()

by Sklyar, Oleg (MI London) :: Rate this Message:

Reply to Author | View in Thread

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 (!object@.validate) 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
osklyar@...

> -----Original Message-----
> From: r-devel-bounces@...
> [mailto:r-devel-bounces@...] On Behalf Of Robin Hankin
> Sent: 07 May 2008 15:44
> To: R-devel@...
> 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@... 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@... mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

 « Return to Thread: optional setValidity()