matrix(data=NA, nrow=<<see below>>, ncol=<<see below>>,
byrow=F, dimnames=NULL)
is.matrix(x)
as.matrix(x)
NAs) are allowed.
ceiling(length(data)/ncol), that is, if
ncol is
specified,
nrow is chosen to match the length of
data.
If neither
nrow or
ncol are specified, then
nrow is the
length of
data and
ncol is 1.
nrow is specified but
ncol is not, then
ncol is defined as:
ceiling(length(data)/nrow).
TRUE, the data values are assumed to be the first
row, then the second row, etc.
If
FALSE, the values are assumed to be the first column,
then the second column, etc.
(The latter is how the data are stored internally.)
dimnames attribute for
the matrix.
Each component must either have length
0 or be a vector of character
strings with length equal to the corresponding element of the
dim
attribute of the result.
matrix returns an
nrow by
ncol matrix with the same mode as
data.
If the data does not fill the matrix, it is repeated until
the matrix is filled.
is.matrix returns
TRUE if
dim(x) is of length
2, and
FALSE otherwise.
as.matrix returns
x, if
x is a matrix; otherwise, a matrix with data from
x and dimension
c(length(x),1).
The
as.matrix function is generic.
It has a method for data frames and various other classes,
and a default method.
Matrix objects are those that have
an attribute
dim of length 2.
The objects may also have an attribute
dimnames
. If so, this is a list of 2 character
vectors, each of which
is either of length zero or else gives the labels corresponding to the
levels of the corresponding subscript in the matrix.
If
mat is a S-PLUS matrix, then
as.vector(mat) is a vector
containing the data values for
mat in normal
array order: the first subscript varies most rapidly.
The
byrow argument should be set to
TRUE if the data values
were read from a file arranged by rows.
There are different types of matrices in S-PLUS.
The simplest type is an ordinary matrix,
which has class
"matrix",
a
dim attribute of length 2,
the product of the dimensions is the length of the object, and
all elements have the same mode.
There are also objects like data frames and bdFrames, which have
two dimensions, and can be subscripted like simple matrices,
but which may have columns of different types.
is.matrix returns
TRUE for these objects,
even though they do not have class
"matrix".
as.matrix tries to produce
a simple matrix. It converts a data frame into an ordinary matrix.
It stops if passed a bdFrame. If you are confident that a bdFrame
is small enough to fit into memory, then convert it to a
data frame using
,
then convert that to a matrix using
as.matrix.
matrix produces an ordinary matrix if
x
is ordinary data, and a
bdFrame if
x is
a big data object.
If you wish to know if you can use two subscripts with an object,
you may test it with
is.matrix but if you want to do more
with it, say matrix multiplication or decompositions, you must use
as.matrix on it first.
This is why you will see the seemingly nonsensical
idiom
if(is.matrix(x)) x <- as.matrix(x) else stop("Not a matrix").
as.matrix for converting a data frame to an ordinary
matrix; these handle character and factor columns differently.
m <- matrix(0, 4, 5) # a 4 by 5 matrix of zeros
matrix(1:10, 5) # a 5 by 2 matrix
matrix(1:10, ncol=2) # the same thing
mm <- matrix( scan("mfile"), ncol=5, byrow=TRUE)
#read all rows from the file