-----Original Message-----
From: r-devel-bounces at r-project.org
[mailto:r-devel-bounces at r-project.org] On Behalf Of Sklyar,
Oleg (MI London)
Sent: 07 May 2008 16:13
To: Robin Hankin; R-devel at r-project.org
Subject: Re: [Rd] optional setValidity()
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 at .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 at maninvestments.com
-----Original Message-----
From: r-devel-bounces at r-project.org
[mailto:r-devel-bounces at r-project.org] On Behalf Of Robin Hankin
Sent: 07 May 2008 15:44
To: R-devel at 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
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
(me) from being too clever and defining a non-standard foo
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