2012-03-30 4 views
10
> 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" 

En R, la matriz de 1 dimensión se cambia a un vector. ¿Puedo evitar esto? Me gustaría mantener la matriz 1-D como matriz. En realidad, necesito lanzar muchos tipos de matriz a RcppArmadillo, incluso a la matriz cero-D. Cambiar la matriz al vector en sí mismo es mi problema.La matriz de 1 dimensión se cambia a un vector en R

+0

'class (a [3,])' solo le indica el modo de almacenamiento. Probablemente deberías estar usando str() ya que te diría la 'longitud'. –

Respuesta

15

Esto es un R FAQ. Debe hacer a[3,,drop = FALSE].

9

Está confundiendo la multiplicación de elementos por elementos y la multiplicación de matrices (consulte ?"*"). Desea %*%:

> a[3,]%*%a[,3] 
    [,1] 
[1,] 150 
+1

Esa es la respuesta correcta a la pregunta de OP. –

Cuestiones relacionadas