This is a set of design principles that - albeit not having been
explicitly set out initially - have guided the development of the R
zoo package.
… having the prescribed methods, see ?zoo and
Zeileis and Grothendieck (2005, Journal of Statistical
Software, doi:10.18637/jss.v014.i06).
Specific index classes are not hard-coded in functions (with a few
exceptions necessitated by external interfaces such as reading and
interfacing with ts) but rather all index operations are
only done via the allowed methods.
As far as possible new names (e.g., for functions or methods and
their arguments) are not introduced. New functionality is added as
methods to generics from base R allowing reuse of those names. When
names are added, thought is put into the name since zoo is
so miserly about adding them. For example, the read.zoo
name is obviously derived from read.table and the names
na.locf or na.approx are in analogy to other
na.* functions frome base R.
The idea is to make the usage of zoo completely natural
to someone who already has experience with R (in particular with the
ts class). Certainly, zoo contains extensions
to base R, but they should be as consistent as possible and have a
natural “look and feel”.
zoo tries to do basic things well, e.g., data reading,
handling, aggregation, transformation, etc. However, it does not provide
time series modeling functionality - zoo rather encourages
add-on packages. A list of current packages employing zoo
can be found on the Comprehensive R Archive Network (CRAN) and in the
zoo FAQ, see
vignette("zoo-faq", package = "zoo").
… on CRAN (or at least all of the more popular ones and some of the
relatively unknown ones as well). Thus, time series information can be
passed back and forth relatively easily between zoo and
other time series classes and hence combinations of various
functionalities are facilitated.
In addition to the standard help() pages,
zoo provides a set of vignettes, see
vignette(package = "zoo") for a list. Standard help and
vignettes are also available on the project web page at https://zeileis.codeberg.page/zoo/. Furthermore, the
zoo Development Team members also post frequently on
StackOverflow and the R mailing lists whose archives hence contain many
useful code snippets etc.
Over the years, zoo has grown into a mature package.
Nevertheless, there are always still bugs (or border cases that are not
handled well). When reported to the development team, these typically
get fixed quickly. Reports can be made via e-mail to the maintainer list
or reported in the code repository at Codeberg.org: https://codeberg.org/zeileis/zoo/issues.
… using R’s own test system (in zoo/tests/).