[Rd] setMethod("c") [was: setMethod("Summary")]
Robin Hankin
r.hankin at noc.soton.ac.uk
Tue Sep 5 16:48:53 CEST 2006
Hello everybody.
I didn't see Franklin's first message; sorry.
Bearing in mind Professor Ripley's comments
on the efficiency of S4 vs S3, I'm beginning to think I
should just stick with S3 methods for my brob objects. After
all, S3 was perfectly adequate for the onion package.
Notwithstanding that, here's my next problem. I want to define a
brob method for "c". Using the example in package "arules" as a
template (I couldn't see one in Matrix), I have
setClass("brob",
representation = representation
(x="numeric",positive="logical"),
prototype = list(x=numeric(),positive=logical())
)
"brob" <- function(x,positive){
if(missing(positive)){
positive <- rep(TRUE,length(x))
}
if(length(positive)==1){
positive <- rep(positive,length(x))
}
new("brob",x=x,positive=positive)
}
setGeneric("getX",function(x){standardGeneric("getX")})
setGeneric("getP",function(x){standardGeneric("getP")})
setMethod("getX","brob",function(x){x at x})
setMethod("getP","brob",function(x){x at positive})
setMethod("c",signature(x="brob"),
function(x, ..., recursive=FALSE){
xx <- x at x
xpos <- x at positive
z <- list(...)
return(
brob(
c(xx,do.call("c",lapply(z,getX))),
c(xpos,do.call("c",lapply(z,getP)))
)
)
}
)
Now, this works for something like
> x <- new("brob",x=pi,positive=T)
> c(x,x)
but c(1,x) isn't dispatched to my function. How to
deal cleanly with this case? Perhaps if any argument
to c() is a brob object, I would like to coerce them all to brobs.
Is this possible?
--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
tel 023-8059-7743
More information about the R-devel
mailing list