groupVec
is a class that groups a list of vectors so that
they can act like a single atomic vector.
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
checking validity.
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
list.
groupVecNames
, for accessing the column names.
groupVecClass
, for accessing the column classes.
groupVec
objects for standard
vector operations. All operate on groupVec
objects
as if they were atomic vectors:
[]
and [[]]
on the
left or right side of an assignment.
length
on the left or right side of an assignment.
c
, and is.na
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:
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.
is
relationship with its
class.
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
"ANY"
class.
groupVecValid
, groupVecExtValid
, groupVec
function, groupVecColumn
, groupVecData
, groupVecNames
, groupVecClasses
.