[R] How numerical data is stored inside ts time series objects
Paul.Domaskis at gmail.com
Wed Apr 22 03:39:16 CEST 2015
William Dunlap <wdunlap <at> tibco.com> writes:
> Use the str() function to see the internal structure of most
> objects. In your case it would show something like:
> > Data <- data.frame(theData=round(sin(1:38),1))
> > x <- ts(Data[], frequency=12) # or Data[,1]
> > y <- ts(Data, frequency=12)
> > str(x)
> Time-Series [1:38] from 1 to 4.08: 0.8 0.9 0.1 -0.8 -1 -0.3 0.7 1 0.4 -
> > str(y)
> ts [1:38, 1] 0.8 0.9 0.1 -0.8 -1 -0.3 0.7 1 0.4 -0.5 ...
> - attr(*, "dimnames")=List of 2
> ..$ : NULL
> ..$ : chr "theData"
> - attr(*, "tsp")= num [1:3] 1 4.08 12
> 'x' contains a vector of data and 'y' contains a 1-column matrix of
> data. stl(x,"per") and stl(y, "per") give similar results as you
> Evidently, stl() does not know that 1-column matrices can be treated
> much the same as vectors and gives an error message. Thus you must
> extract the one column into a vector: stl(y[,1], "per").
Interesting that a 2D matrix of size Nx1 is treated as a different
animal from a length N vector. It's a departure from math convention,
and from what I'm accustomed to in Matlab. that R's vector seems
more akin to a list, where the notion of orientation doesn't apply.
I rummaged around the help files for str, summary, dput, args. This
seems like a more complicated language than Matlab, VBA, or even C++'s
STL of old (which was pretty thoroughly documented). A function like
str() returns an object description, and I'm guessing the conventions
with which the object is described depends a lot on the person who
wrote the handling code for the class. The description for the
variable y seems particularly elaborate.
Would I be right in assuming that the notation is ad-hoc and not
documented? For example, the two invocations str(x) and str(y) show a
Time-Series and a ts. And there are many lines of output for str(y)
that is heavy in punctuation.
More information about the R-help