From chalabi at phys.ethz.ch  Thu Aug  7 15:37:09 2008
From: chalabi at phys.ethz.ch (Yohan Chalabi)
Date: Thu, 7 Aug 2008 15:37:09 +0200
Subject: [Rd] '"ts" treated as a registered S3 class,
 but keep its "structure" behaviour' ?
Message-ID: <20080807153709.7d713064@mimi>

Dear all,

In R-devel I have noticed the new approach for the "ts" class in the
package "methods".

the "structure" behaviour of "ts" is not always kept when one uses
"ts" objects and objects of classes which extend the virtual class
"structure".

As a short example:

## this works fine
setClass("foo", representation(header = "character"), contains = "structure")
foo <- new("foo", 1:10, header = "foo")
ts <- ts(1:10)
foo / ts

## but the problem appears when one defines an "Ops" method for class "foo"
setMethod("Ops", c("foo", "foo"),
           function(e1, e2) {
               .Data <- callGeneric(e1 at .Data, e2 at .Data)
               header <- paste(e1 at header, e2 at header, sep = "_")
               new("foo", .Data, header = header)
           })
foo <- new("foo", 1:10, header = "foo")
foo + foo
ts <- ts(1:10)
foo / ts
# Error in getDataPart(1:10) : no '.Data' slot defined for class "ts"

Is this the expected behavior?

regards,
Yohan

--
PhD student
Swiss Federal Institute of Technology
Zurich

www.ethz.ch



[Rd] '"ts" treated as a registered S3 class, but keep its "structure" behaviour' ?
Yohan Chalabi