[R] convert vector to matrix

Gavin Simpson gavin.simpson at ucl.ac.uk
Thu Oct 5 00:54:45 CEST 2006


On Wed, 2006-10-04 at 19:55 -0200, Alberto Monteiro wrote:
> Gavin Simpson wrote:
> > 
> > Did you even try to use cbind on your vector? I guess not as,
> > 
> > > vec <- 1:10
> > > mat <- cbind(vec)
> > > mat
> >
> Why does mat remain a matrix instead of "losing" one dimension?
> I am reading the FAQ at...
> http://cran.us.r-project.org/doc/FAQ/R-FAQ.html#Why-do-my-matrices-lose-
> dimensions_003f
> ... and it seems that anything you do to mat should turn it back
> into a one-dimensional vector.

Dear Alberto,

That FAQ is referring to subsetting a matrix, and as yet, the code above
has not subsetted mat at all - indeed, we have only created it and then
examined it's class, if we were to now look at rows 2:5, then we'd see
that mat loses a dimension and reverts to a vector:

> vec <- 1:10
> mat <- cbind(vec)
> mat
      vec
 [1,]   1
 [2,]   2
 [3,]   3
 [4,]   4
 [5,]   5
 [6,]   6
 [7,]   7
 [8,]   8
 [9,]   9
[10,]  10
> mat[2:5,]
[1] 2 3 4 5
> vec[2:5]
[1] 2 3 4 5
> class(mat[2:5,])
[1] "integer"
> class(vec[2:5])
[1] "integer"
> all.equal(mat[2:5,], vec[2:5])
[1] TRUE

To preserve dimensions, we use drop = FALSE, as discussed in the FAQ you
quote: 

> mat[2:5, , drop = FALSE]
     vec
[1,]   2
[2,]   3
[3,]   4
[4,]   5
> class(mat[2:5, , drop = FALSE])
[1] "matrix"

HTH

G
-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 *Note new Address and Fax and Telephone numbers from 10th April 2006*
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Gavin Simpson                     [t] +44 (0)20 7679 0522
ECRC                              [f] +44 (0)20 7679 0565
UCL Department of Geography
Pearson Building                  [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street
London, UK                        [w] http://www.ucl.ac.uk/~ucfagls/cv/
WC1E 6BT                          [w] http://www.ucl.ac.uk/~ucfagls/
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the R-help mailing list