2013-05-05 14 views
6

Qual è il modo più breve per ottenere una riga dalla matrice come matrice?Ottenimento riga matrice come matrice

> x<-matrix(1:9,nrow=3,byrow=TRUE) 
> x 
    [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 4 5 6 
[3,] 7 8 9 
> x[1,] 
[1] 1 2 3 
> is.vector(x[1,]) 
[1] TRUE 

dove mi piacerebbe ottenere

 [,1] [,2] [,3] 
[1,] 1 2 3 
+1

Vieni Giraphant . Dare il segno di spunta. Non c'è davvero nessuna altra risposta. –

risposta

17

[ prende un argomento drop controllare se il sottoinsieme estratto verrà costretto (se possibile) a un oggetto dimensionale inferiore (in questo caso un vettore semplice). Per garantire che un sottoinsieme di una matrice sarà sempre una matrice, impostarlo drop=FALSE, in questo modo:

x[1,,drop=FALSE] 
    [,1] [,2] [,3] 
[1,] 1 2 3 

(. E per il set completo di regole di sottoinsiemi e argomenti, provare help("["))

+0

Questo è meglio, perché dimentico sempre gli argomenti per '[]'? – alexwhan

+0

Grazie mille :) Questo è meglio perché si comporta allo stesso modo in due casi. Il primo caso è quando abbiamo matrice A (3x3) e vogliamo selezionare più di una riga A [1: 2,] - il risultato è matrice quindi nessuna azione necessaria d'altra parte A [1,] - è vettoriale quindi abbiamo bisogno convertire in matrice (as.matrix) e trasporre. – LukaszJ

1
t(as.matrix(x[1,])) 

dovrebbe fare il trucco ...

Problemi correlati