2013-05-05 11 views
6

Jaki jest najkrótszy sposób na uzyskanie wiersza z macierzy jako macierzy?Uzyskiwanie wiersza macierzy jako macierzy

> 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 

gdzie chciałbym dostać

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

Chodź Giraphant . Podaj znacznik wyboru. Naprawdę nie ma żadnej innej odpowiedzi. –

Odpowiedz

17

[ zajmuje drop argumentu kontroli czy wyodrębniony podzbiór będzie zmuszany (jeśli możliwe) do niższego obiektu wymiarowego (w tym przypadku prostego wektora). Aby upewnić się, że podzbiór macierzy zawsze będzie macierz, ustawić go drop=FALSE, tak:

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

(. A dla pełnego zbioru zasad podzbiorów i argumentów, spróbuj help("["))

+0

Lepiej, dlaczego zawsze zapominam argumenty dla '[]'? – alexwhan

+0

Wielkie dzięki :) Ta jest lepsza, ponieważ zachowa się tak samo w dwóch przypadkach. Pierwszy przypadek mamy wtedy, gdy mamy macierz A (3x3) i chcemy wybrać więcej niż jeden wiersz A [1: 2,] - wynikiem jest macierz, więc z drugiej strony nie potrzeba działania A [1,] - to wektor, więc potrzebujemy konwertuj do macierzy (as.matrix) i transponuj. – LukaszJ

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

powinno wystarczyć ...

Powiązane problemy