Làm thế nào để tập hợp con 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?


84

Khi tôi đặt con ma trận vào một cột duy nhất, kết quả là số lớp, không phải ma trận (tức là myMatrix [, 5] thành tập con đến 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 cần làm gì đó phức tạp như:

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

Câu trả lời:


122

Sử dụng drop=FALSEđối số để [.

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

Tôi sẽ tuyên thệ nhậm chức, tôi thấy điều này chỉ thời gian gần đây nhưng nó có thể là hành vi dataframe tương tự mà đã được đặt câu hỏi: stackoverflow.com/questions/6941985/...
IRTFM

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

Để đưa ra một ví dụ về cơ sở thống kê, sử dụng khoảng cách D của Cooks, sau đó chọn các giá trị dựa trên giá trị bị cắt, ví dụ: 0,1, nó sẽ dẫn đến các giá trị cooksD với số hàng tương ứng của chúng trong tập dữ liệu tương đối cooksd<-as.data.frame(cooks.distance(ft1)) cooksD_outliers<-cooksd[cooksd>0.1,drop=FALSE,]
Elias Est StatisticsEU

result <-apply (temp, 1, function (x) tapply (x, geneymbol, function (x) mean (x, na.rm = T)))) Cách giải quyết vấn đề mà kết quả là một mảng, nhưng trên thực tế, Tôi muốn nó là một khung dữ liệu một cột? Cảm ơn
Shicheng Guo

@ShichengGuo: Bạn nên đặt một câu hỏi mới.
Joshua Ulrich
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.