Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

1-dimensional Matrix is changed to a vector in R

> a<-matrix(c(1:9),3,3)
> a
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> a[3,]*a[,3]  # I expect 1x1 matrix as result of this.
[1] 21 48 81
> class(a)
[1] "matrix"
> class(a[3,])
[1] "integer"

In R, 1-dimensional matrix is changed to a vector. Can I avoid this? I would like to keep 1-D matrix as a matrix. Actually, I need to throw many kind of matrix to RcppArmadillo, even zero-D matrix. Changing matrix to vector by itself is my problem.

like image 281
Jona Avatar asked Mar 30 '12 19:03

Jona


1 Answers

This is an R FAQ. You need to do a[3,,drop = FALSE].

like image 166
joran Avatar answered Sep 17 '22 19:09

joran