Group Vector Class
groupVec is a class that groups a list of vectors so that
they can act like a single atomic vector.
groupVec is a class for objects that act as vectors but
are actually made up of a collection of vectors of the same length, and
which are accessed together and would usually be expected to be printed
as if they were simple atomic vectors.
The groupVec class manages the basic vector operations, such
as subscripting and length. Extending classes must manage the meaning
of the collection of vectors and more specific operations such as
character coercion. Extending classes can have other information
(although probably not the same length) in other slots. Subscripting
on a groupVec-extended class carries this information along unchanged.
A groupVec object also has the following characteristics:
- A valid groupVec object holds a list of vector "columns" with names and
classes, where the vectors in the list correspond one-to-one with the
names and classes.
- Each vector satisfies an is relationship with its
- All the vectors are the same length.
The object is intended to be used as a base class for defining other
classes with fixed column names and classes but could also be used
as a more dynamic list.
The difference between a groupVec and a data.frame, matrix, or other
rectangular structure is that a groupVec is meant to hold objects
whose columns really should not be considered as separate observations.
For example, the timeDate class is a groupVec whose columns are
the date and time of day in GMT, with additional slots for output format and
time zone. Because the date can affect the time of day in the local time
zone (if there is daylight savings time), and the time of day can
affect the date in the local time zone (if the time zone conversion
crosses a date boundary), and because each time and date in the
timeDate object is displayed as a single character string containing
both time and date, the time and date columns are not meant to be
accessed separately, and in fact the user does not even have to know
that they are stored separately.
The objects in groupVec columns do not have to be atomic vectors. They
can be any class that has a well-defined length. This design allows one
groupVec object to hold other groupVec objects, lists, data.frames,
any type of R vectors, and user-defined types in its columns.
If type checking is not desired for a column, the column class can be set to
"ANY", because any R object has an is relationship with the special
Objects from the Class
Create objects using calls of the form new("groupVector",
...) or groupVector.
(list) the list of vector columns.
(character) the column names.
(character) the column classes.
- groupVec: The groupVec constructor function.
- groupVecValid: a groupVec class validity function.
- groupVecExtValid: a validity function that user-defined extending
classes with set column names and column classes can use for
Although the slots of a groupVec
can be accessed directly, it is not
recommended. Instead, there are several access functions that you can
use on the left or right side of assignments, and that preserve the
validity of groupVec
objects. These functions are:
- groupVecColumn, for accessing a single column.
- groupVecData, for accessing the entire data
- groupVecNames, for accessing the column names.
- groupVecClass, for accessing the column classes.
See individual function documentation for more information.
Several methods have been defined for groupVec
objects for standard
vector operations. All operate on groupVec
as if they were atomic vectors:
- subscripting with  and [] on the
left or right side of an assignment.
- length on the left or right side of an assignment.
- c, and is.na