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

In R, la matrice monodimensionale viene modificata in un vettore. Posso evitare questo? Vorrei mantenere la matrice 1-D come matrice. In realtà, ho bisogno di lanciare molti tipi di matrice su RcppArmadillo, anche con matrice zero-D. Cambiare la matrice per disegnare da solo è il mio problema.La matrice monodimensionale viene modificata in un vettore in R

+0

'class (a [3,])' indica solo la modalità di archiviazione. Probabilmente dovresti usare str() dato che ti direbbe 'length'. –

risposta

15

Questo è un R FAQ. Devi fare a[3,,drop = FALSE].

9

Si sta confondendo moltiplicazione elemento per elemento e moltiplicazione di matrice (vedere ?"*"). Si desidera %*%:

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

Questa è la risposta giusta alla domanda dell'OP. –

Problemi correlati