2012-01-25 27 views
6

Tôi tuyên bố 1 6 ma trận A bằng cách nói:Làm thế nào để chỉ số ma trận R mà không có nó quay trở lại vector

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

tôi sau đó làm mờ (A) và như mong đợi tôi nhận được 1 6 ... nhưng sau đó tôi làm A [, 2: 5] và tôi hy vọng rằng đó là ma trận kích thước 1 x 4 với mục 2,3,4,5 ... nhưng thay vào đó mờ (A [, 2: 5]) cho tôi VÔ GIÁ TRỊ! nó biến thành một vectơ hay gì đó. Làm thế nào tôi có thể tránh điều này?

cuối cùng tôi đang cố gắng để làm một cái gì đó như:

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

khác nhau a và b để tôi có thể nhân lên chỉ các bộ phận của ma trận trên together..but này phá vỡ khi một phân rã thành một vector ...

Cảm ơn

Trả lời

9

Sử dụng ,drop=FALSE như một bổ sung (trailing) lập luận để tham gia ].

Ví dụ:

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> 

này cũng có thể là các FAQ chính, nhưng vì lý do tương thích hành vi này là không thay đổi.

+0

Cảm ơn điều này dường như thực hiện thủ thuật! –

+3

Rất vui khi biết điều đó. Và trong trường hợp đó là phổ biến xung quanh đây để 'chấp nhận' câu trả lời tốt nhất bằng cách nhấp vào dấu tick, và chỉ có bạn là poster ban đầu của câu hỏi có thể làm điều đó. –

+2

Vòng tròn 8.1.44 của 'The R Inferno' http://www.burns-stat.com/pages/Tutor/R_inferno.pdf –

Các vấn đề liên quan