swh:1:snp:a4c99a50dc49f82b591f268001b320f8c3ca0041
Raw File
Tip revision: dc000f2a5f006d137f66716b086025d618bf8306 authored by John M Chambers on 14 July 2008, 00:00:00 UTC
version 1.0-5
Tip revision: dc000f2
trackNumeric.R
setClass("trackNumeric",
         contains = c("numeric", "track"))

setValidity("trackNumeric",  function(object) {
             slotLengths <- c(length(object@.Data), length(object@x),
                              length(object@y))
             if(length(unique(slotLengths)) == 1)
               TRUE
             else
               paste("Differing lengths for data, x, y:",
                     paste(slotLengths, collapse = ", "))
         })

setMethod("show", "trackNumeric",
          function(object) {
              message("Object of class: \"", class(object), "\"")
              show(cbind(object@.Data, x = object@x, y = object@y))
          })

setMethod("plot", c("trackNumeric", "missing"), #version 2
          function(x, y, points = c(".", "o", "*"), ...) {
              which = as.integer(cut(x@.Data, length(points)))
              callNextMethod(x, pch = points[which], ...)
              })
setMethod("[",
    signature("trackNumeric", "numeric"),
    function (x, i, j, ..., drop = TRUE) 
    {
        if(all(i>0)) {
        	## must be monotone so it keeps the "track" concept
        	diffi <- diff(i)
        	if(all(diffi>0) || all(diffi<0)) {} #OK
        	else
        	  stop("Only subsets that extract in a single direction produce a valid track object")
        	}
        	x@.Data <- x@.Data[i]
        	x@x <- x@x[i]
        	x@y <- x@y[i]
        	x
    }
)
back to top