[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