2012-01-25 3 views
6

declaré un 1 por 6 matriz A diciendo:Cómo índice de matriz R, sin que vuelva de nuevo a vector

A <- matrix(1:6, nrow=1) 

que luego hacer dim (A) y como se esperaba consigo 1 por 6 ... pero entonces hago A [, 2: 5] y yo esperaría que fuera una matriz de dimensión 1 por 4 con entradas 2,3,4,5 ... pero en cambio dim (A [, 2: 5]) me da ¡NULO! se degrada en un vector o algo. ¿Cómo puedo evitar esto?

estoy en última instancia, tratando de hacer algo como:

A[,a:b] %*% X[a:b,a:b] %*% t(A[,a:b]) 

variable a y b para que pueda multiplicarse sólo partes de las matrices anteriores together..but esto rompe cuando A se desintegra en un vector ...

Gracias

Respuesta

9

Use ,drop=FALSE como un argumento adicional (final) a la participación de ].

Ejemplo:

R> M <- matrix(1:4,2,2) 
R> M[,2]     ## looses matrix class 
[1] 3 4 
R> M[,2,drop=FALSE]  ## forced to a n x 1 matrix 
    [,1] 
[1,] 3 
[2,] 4 
R> 

Esto bien puede ser la FAQ principal, pero por razones de compatibilidad es poco probable que cambie el comportamiento.

+0

¡Gracias esto parece hacer el truco! –

+3

Me alegra oír eso. Y en este caso, es común aquí para 'aceptar' la mejor respuesta haciendo clic en la marca y solo usted como el póster original de la pregunta puede hacerlo. –

+2

Circule 8.1.44 de 'The R Inferno' http://www.burns-stat.com/pages/Tutor/R_inferno.pdf –

Cuestiones relacionadas