2011-09-08 35 views
56

Khi tôi đặt một ma trận vào một cột đơn, kết quả là số lớp, không phải ma trận (tức là myMatrix [, 5] để đặt thành cột thứ năm). Có cách nào nhỏ gọn để tập hợp con vào một cột duy nhất, duy trì định dạng ma trận, và duy trì tên hàng/cột mà không làm một cái gì đó phức tạp như:Làm thế nào để đặt ma trận thành một cột, duy trì kiểu dữ liệu ma trận, duy trì tên hàng/cột?

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

Trả lời

78

Sử dụng đối số 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

Tôi đã thề rằng tôi đã thấy điều này chỉ gần đây nhưng có thể đó là hành vi dataframe tương tự đã được đặt câu hỏi: http://stackoverflow.com/questions/6941985/r-how-to-subset-a -data-frame-in-a-list-and-return-data-frame –

+0

thật tuyệt vời! – SFun28

+1

Nếu bạn muốn lập chỉ mục theo thứ nguyên đầu tiên, bạn có thể sử dụng lệnh thả như sau: 'm [1,, drop = FALSE]' –

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