The R Project SVN R

Rev

Rev 71468 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 71468 Rev 71526
Line 302... Line 302...
302
 
302
 
303
 
303
 
304
  removeClass("stamped")
304
  removeClass("stamped")
305
  rm(someLetters, st)
305
  rm(someLetters, st)
306
 
306
 
-
 
307
### from S3Part.Rd
-
 
308
 
-
 
309
## extending S3 class "lm", "xlm" directly
-
 
310
## and "ylm" indirectly
-
 
311
xlm <- setClass("xlm", slots = c(eps = "numeric"), contains = "lm")
-
 
312
ylm <- setClass("ylm", slots = c(header = "character"), contains = "xlm")
-
 
313
 
-
 
314
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
-
 
315
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
-
 
316
group <- gl(2,10,20, labels=c("Ctl","Trt"))
-
 
317
weight <- c(ctl, trt)
-
 
318
lm.D9 <- lm(weight ~ group)
-
 
319
 
-
 
320
## lm.D9 is as computed in the example for stats::lm
-
 
321
y1 <-ylm(lm.D9, header = "test", eps = .1)
-
 
322
xx <- xlm(lm.D9, eps =.1)
-
 
323
y2 <- ylm(xx, header = "test")
-
 
324
stopifnot(inherits(y2, "lm"))
-
 
325
stopifnot(identical(y1, y2))
-
 
326
stopifnot(identical(S3Part(y1, strict = TRUE), lm.D9))
-
 
327
 
-
 
328
## note the these classes can insert an S3 subclass of "lm" as the S3 part:
-
 
329
myData <- data.frame(time = 1:10, y = (1:10)^.5)
-
 
330
myLm <- lm(cbind(y, y^3)  ~ time, myData) # S3 class: c("mlm", "lm")
-
 
331
ym1 <- new("ylm", myLm, header = "Example", eps = 0.)
-
 
332
 
-
 
333
##similar classes to "xlm" and "ylm", but extending S3 class c("mlm", "lm")
-
 
334
setClass("xmm", slots = c(eps = "numeric"), contains = "mlm")
-
 
335
setClass("ymm", slots = c(header="character"), contains = "xmm")
-
 
336
 
-
 
337
ym2 <- new("ymm", myLm, header = "Example2", eps = .001)
-
 
338
 
-
 
339
# but for class "ymm", an S3 part of class "lm" is an error:
-
 
340
try(new("ymm", lm.D9, header = "Example2", eps = .001))
-
 
341
tools::assertError(
-
 
342
    new("ymm", lm.D9, header = "Example2", eps = .001))
-
 
343
 
-
 
344
setClass("dataFrameD", slots = c(date = "Date"),
-
 
345
         contains = "data.frame")
-
 
346
myDD <- new("dataFrameD", myData, date = Sys.Date())
-
 
347
 
-
 
348
## S3Part() applied to classes with a data part (.Data slot)
-
 
349
 
-
 
350
setClass("NumX", contains="numeric", slots = c(id="character"))
-
 
351
nn <- new("NumX", 1:10, id="test")
-
 
352
stopifnot(identical(1:10, S3Part(nn, strict = TRUE)))
-
 
353
 
-
 
354
m1 <- cbind(group, weight)
-
 
355
setClass("MatX", contains = "matrix", slots = c(date = "Date"))
-
 
356
mx1 <- new("MatX", m1, date = Sys.Date())
-
 
357
stopifnot(identical(m1, S3Part(mx1, strict = TRUE)))