2011-09-08 18 views
56

Po podzieleniu macierzy na jedną kolumnę, wynikiem jest klasa numeryczna, a nie macierz (tj. MyMatrix [, 5] do podzbioru do piątej kolumny). Czy istnieje sposób zwarty podzbiór do pojedynczej kolumny, utrzymania formatu matrycy i utrzymania nazw wiersz/kolumna nie robiąc coś skomplikowane jak:Jak dokonać podziału macierzy na jedną kolumnę, zachować typ danych macierzy, zachować nazwy wierszy/kolumn?

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

Odpowiedz

78

Użyj drop=FALSE argument [.

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

bym przysiąc, widziałem to całkiem niedawno, ale to mogło być analogiczne zachowanie dataframe że był przesłuchiwany: http://stackoverflow.com/questions/6941985/r-how-to-subset-a -data-frame-in-a-list-and-return-data-frame –

+0

To niesamowite! – SFun28

+1

Jeśli chcesz indeksować tylko według pierwszego wymiaru, możesz użyć upuszczania w następujący sposób: 'm [1,, drop = FALSE]' –

Powiązane problemy