2011-09-08 9 views
56

Quando sottopongo una matrice a una singola colonna, il risultato è di classe numerico, non matrice (cioè myMatrix [, 5] per il sottoinsieme alla quinta colonna). C'è un modo compatto per sottoinsiemi per una singola colonna, mantenere il formato della matrice, e mantenere i nomi di riga/colonna senza fare qualcosa di complicato come:Come sottoporre a matrice la matrice a una colonna, mantenere il tipo di dati di matrice, mantenere i nomi di riga/colonna?

matrix(myMatrix[ , 5 ] , dimnames = list(rownames(myMatrix) , colnames(myMatrix)[ 5 ]) 

risposta

78

utilizzare l'argomento drop=FALSE-[.

m <- matrix(1:10,5,2) 
rownames(m) <- 1:5 
colnames(m) <- 1:2 
m[,1]    # vector 
m[,1,drop=FALSE] # matrix 
+0

avrei giurato che ho visto questo proprio di recente, ma potrebbe essere stato il comportamento dataframe analogo che è stato messo in discussione: http://stackoverflow.com/questions/6941985/r-how-to-subset-a -data-frame-in-a-list-and-return-data-frame –

+0

è fantastico! – SFun28

+1

Se si desidera indicizzare solo la prima dimensione, è possibile utilizzare la discesa come segue: 'm [1,, drop = FALSE]' –

Problemi correlati