Lyman, Mark
2009-Jan-22 16:37 UTC
[R] Confused about behavior of an S4 object containing a ts object
I posted the question below about a month ago but received no response. I still have not been able to figure out what is happening. I also noticed another oddity. When the data part of the object is a multivariate time series, it doesn't show up in the structure, but it can be treated as a multivariate time series. Is this a bug in str?> setClass("tsExtended", representation = representation(description+ = "character"), contains = "ts") [1] "tsExtended"> tmp <- new("tsExtended", matrix(1:20, ncol=2), description = "My TimeSeries")> tsp(tmp) <- c(1, 5.5, 2) > tmpObject of class "tsExtended" Time Series: Start = c(1, 1) End = c(5, 2) Frequency = 2 Series 1 Series 2 1.0 1 11 1.5 2 12 2.0 3 13 2.5 4 14 3.0 5 15 3.5 6 16 4.0 7 17 4.5 8 18 5.0 9 19 5.5 10 20 Slot "description": [1] "My Time Series"> str(tmp)Formal class 'tsExtended' [package ".GlobalEnv"] with 4 slots ..@ .Data : int [1:20] 1 2 3 4 5 6 7 8 9 10 ... ..@ description: chr "My Time Series" ..@ tsp : num [1:3] 1 5.5 2 ..@ .S3Class : chr "ts"> tmp[,1]Time Series: Start = c(1, 1) End = c(5, 2) Frequency = 2 [1] 1 2 3 4 5 6 7 8 9 10> plot(tmp[,2])Mark Lyman -----Original Message----- From: Lyman, Mark Sent: Thursday, December 18, 2008 1:02 PM To: 'r-help at r-project.org' Subject: Confused about behavior of an S4 object containing a ts object I am trying to define an S4 class that contains a ts class object, a simple example is shown in the code below. However, when I try to create a new object of this class the tsp part is ignored, see below. Am I doing something wrong, or is this just a peril of mixing S3 and S4 objects?> setClass("tsExtended", representation = representation(description= "character"), contains = "ts") [1] "tsExtended"> new("tsExtended", ts(1:10, frequency = 2), description = "My TimeSeries") Object of class "tsExtended" Time Series: Start = 1 End = 10 Frequency = 1 [1] 1 2 3 4 5 6 7 8 9 10 Slot "description": [1] "My Time Series"> # This however seems to work > tmp <- new("tsExtended", 1:10, description = "My Time Series") > tsp(tmp) <- c(1, 5.5, 2) > tmpObject of class "tsExtended" Time Series: Start = c(1, 1) End = c(5, 2) Frequency = 2 [1] 1 2 3 4 5 6 7 8 9 10 Slot "description": [1] "My Time Series" Mark Lyman, Statistician Engineering Systems & Integration, ATK