cbind
and
rbind
are generic.
In particular, there are
cbind
and
rbind
methods
for data frames and
bdFrame
s.
cbind(..., deparse.level=1) rbind(..., deparse.level=1)
NA
s) are allowed.
cbind
or row labels for
rbind
).
This only applies to unnamed vector (non-matrix) arguments.
If
deparse.level
is 0, the corresponding row or column
has no label; if it is 2, the label is the deparsed
form of the argument; and if it is 1, the deparsed form is used
only if the argument is a simple name, any other expression
results in no label.
These are the only acceptable values for this argument.
cbind
) or rows
(
rbind
).
This matrix may have a
dimnames
attribute.
The default methods for
cbind
and
rbind
are built
into the generic functions. That is, there are no
cbind.default
or
rbind.default
functions.
If any of the input data objects are classed, the appropriate method for that class is dispatched; you are warned if incompatible methods are dispatched.
If several arguments are matrices, they must contain the same number
of rows (
cbind
) or columns (
rbind
).
In addition, all arguments that have
names
attributes must have
the same length, which also must match the number of rows/columns
of any matrix arguments.
Vector arguments are treated as
row vectors by
rbind
and column vectors by
cbind
.
If all arguments are vectors,
the result will contain as many rows or columns as the length of the
longest vector.
Shorter vectors will be repeated.
The
dimnames
attribute of the returned matrix is constructed
as follows:
for any matrix argument, its
dimnames
attribute is carried over;
for any vector argument with a
names
attribute,
the
names
attribute becomes the row (column) component
of
dimnames
for
cbind
(
rbind
);
any vector argument may be given in
name=value
form,
where the name specifies its corresponding
dimnames
entry.
If
cbind
is given more than one named vector or matrix,
the rownames of the result are the names of the last named vector
or matrix with rownames in the argument list
(and similarly for the column names the result of
rbind
).
If arguments are time series, no attempt is made to relate their time
parameters.
See
ts.union
and
ts.intersect
for this case.
Arguments that are
NULL
or zero-length are ignored.
When writing a function, you could build a matrix by using a statement
such as
x <- cbind(x, tmp.vec)
inside of a
for
loop.
A better way to do the same thing is to create a matrix which is the
final size before entering the
for
loop:
x <- matrix(nrow=n, ncol=p)
Then use replacement inside the
for
loop:
x[,i] <- tmp.vec
This latter strategy uses much less memory than the method using
cbind
.
The "cbind" method should only be used when the eventual size of the matrix
is unknown.
# add column of ones cbind(1, xmatr) %*% regr$coef # add 2 new rows rbind(matrix, newrow1, newrow2) # 3 column matrix with column dimnames cbind(gnp=gnp, income=income, unemployment=unemployment) # 4 combining two named vectors mil1 <- c(c=3,d=4,e=5) mil2 <- c(f=6,g=7,h=8) cbind(mil1, mil2) # columnames will be mil1, mil2 # rownames will be f g h