bdFrame
s,
atomic vectors, and
bdVector
s.
as.rectangular
converts any object to a rectangular
data object (usually a data frame or
bdFrame
), if possible.
is.rectangular
tests whether an object is rectangular.
subscript2d
is for subscripting.
numRows
and
numCols
count the number of rows and columns, and
rowIds
and
colIds
(and
rownames
and
colnames
) return the row and column names or other
identifiers attached to rows and columns.
subscript2d
,
numRows
,
numCols
,
rowIds
,
colIds
,
rownames
and
colnames
can also be used on the left side of assignments.
as.rectangular(x) as.char.rect(x) is.rectangular(x) subscript2d(x,i,j) subscript2d(x,i,j) <- value numRows(x) NROW(x) numRows(x) <- value numCols(x) NCOL(x) numCols(x) <- value rowIds(x) rowIds(x) <- value colIds(x) colIds(x) <- value rownames(x, do.NULL=TRUE, prefix="row") rownames(x) <- value colnames(x, do.NULL=TRUE, prefix="col") colnames(x) <- value
as.rectangular
), or a
rectangular data object.
rownames
) or column (
colnames
) names are
NULL
.
as.rectangular
returns
x
if it is already rectangular, or
as.data.frame(x)
if it is not.
as.char.rect
takes a rectangular object and returns a rectangular
object consisting of character strings, suitable for printing
(but not formatted to fixed width).
is.rectangular
returns
TRUE
if
x
is rectangular, and
FALSE
if it is not.
subscript2d(x,i,j)
is like
x[i,j,drop=F]
, except that it allows
x[,1]
(for example) for atomic vectors as well.
It usually returns an
object of the same class as
x
(this is not appropriate
for some objects, e.g.
"bs"
objects).
It does not support a
drop
argument.
numRows
and
numCols
return integers, like
nrow
and
ncol
,
except that they also work on atomic vectors (
numRows
returns
the length of the vector, and
numCols
returns 1).
rowIds
and
colIds
return the IDs of the rows and columns.
These are often character vectors or
bdCharacter
s, but need not be, depending
on the class of
x
. They are like the components of
dimnames
, except that for named vectors or
bdVector
s,
rowIds
returns
or sets the names (though
colIds
returns
NULL
).
colnames
and
rownames
return the same values as
colIds
and
rowIds
, respectively, if
do.NULL=T
.
But if
do.NULL=F
and the row or column names are NULL, then
a character vector of the appropriate length is created by prepending
prefix
to a sequence of integers beginning with "1".
subscript2d
used in an assignment does not allow subscript replacement
outside the bounds of
x
; instead you should set
numRows
or
numCols
first. When
numRows
or
numCols
is used in
an assignment, the row and column IDs will be maintained
to have the correct length. Usually, this is done by
setting
numRows
on the ID vector, but for some objects
(for example, data frames) this may not be appropriate and they
have their own methods.
The
value
may be a character vector, or anything that
can be coerced to a character vector. However, it should not
be a
bdCharacter
or other
bdVector
;
you can convert these to an ordinary vector using
bd.coerce
Instead of using
names
to replace row names from a matrix,
use
rowIds
or
dimnames
.
The functions
colnames
,
rownames
,
colnames<-
,
rownames<-
,
NROW
, and
NCOL
emulate R
functions of the same names. Functions
colnames<-
and
rownames<-
simply call
colIds<-
and
rowIds<-
, respectively.
Functions
NROW
and
NCOL
call
numRows
and
numCols
, respectively.
colnames
and
rownames
return the same values as
colIds
and
rowIds
, respectively, if
do.NULL=T
.
subscript2d
used to be called
sub
. This
name conflicted with that of an R (and perl) function that does
what the S-PLUS
substituteString
does so it was renamed
for S-PLUS 8.0.
x <- 1:10 y <- list(a=1:10, b=11:20) is.rectangular(x) y <- as.rectangular(y) subscript2d(x,3,1) subscript2d(y,4,1) <- 55 numRows(x) numCols(y) <- 3 rowIds(x) <- letters[1:10] colIds(y) z <- cbind(1,1:4) colnames(z, do.NULL = FALSE) colnames(z) <- colnames(z, do.NULL = FALSE) rownames(z) <- rownames(z, do.NULL = FALSE, prefix="R")