From r.hankin at noc.soton.ac.uk  Tue Aug 29 11:42:21 2006
From: r.hankin at noc.soton.ac.uk (Robin Hankin)
Date: Tue, 29 Aug 2006 10:42:21 +0100
Subject: [Rd] vector S4 classes
Message-ID: <AC7EC9F8-ECDC-4E6A-BB8D-7C53A4A7605F@soc.soton.ac.uk>

In the Green Book, section 7.5 discusses new vector classes and uses  
quaternions
as an example of a vector class that needs more than one number per  
element.

I would like to define a new class that has a numeric vector and a  
logical
vector of the same length that specifies whether the measurement was  
accurate.

The following code does not behave as desired:

 > setClass("thing",representation("vector",accurate="logical"))
[1] "thing"
 > dput(x <- new("thing",1:10,accurate=rep(T,10)))
structure(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), accurate = c(TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), class =  
structure("thing", package = ".GlobalEnv"))
 > x[1:3]
[1] 1 2 3
 > dput(x[1:3])
c(1, 2, 3)
 >

because, although the "accurate" slot is filled as desired in "x",  
when extracting the first
three elements, it seems to be lost.

What is the appropriate setClass() call to do what I want?  Or indeed  
is making "thing"
a vector class as sensible idea here?





--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743




[Rd] vector S4 classes
Robin Hankin