2011-06-29 39 views
12

Cho một ma trận:R - vị trí trả về của phần tử trong ma trận?

 [,1] [,2] 
[1,] 0 0.0 
[2,] -1 0.8 

cách nhanh nhất trong R để lặp qua các ma trận và trở lại vị trí của tất cả các mục khác không như một chỉ số là gì?

+6

câu hỏi của bạn nên được "đó là cách nhanh nhất?" Sau đó, nó cũng sẽ trả lời chính nó;) – hadley

+1

Tôi đã cười khúc khích về điều này "đó là cách nhanh nhất" trò đùa trong hai ngày. Tôi đã biến nó thành một bài đăng trên blog mà tôi thích nó rất nhiều. –

Trả lời

27

Dưới đây là một cách tiếp cận

mat = matrix(rnorm(9), 3, 3) 
which(mat !=0, arr.ind = T) 
+0

Rất vui khi bạn đồng ý! –

+0

@ Cotton: Câu trả lời của Ramnath đã thêm thông tin rất được sử dụng là có một tham số bổ sung để tạo ra đầu ra định hướng ma trận. Vì vậy, tôi đã không nhìn thấy anh ta như đồng ý rất nhiều như làm một công việc tốt hơn của suy luận những gì OP muốn. –

+0

@DWin Err, không phải là những gì 'TRUE' trong mã R @ Ritchie sau khi" hoặc có thể "đang làm gì? Hình thức nghèo nàn trong một môi trường giảng dạy để không đặt tên đối số, nhưng hai câu trả lời là như nhau. –

15
m <- matrix(c(0, 1, 1, 0), nrow = 2) 
which(m != 0) 

hoặc có thể

which(m != 0, TRUE) 
Các vấn đề liên quan