2011-12-07 24 views
6

Tôi đang cố gắng tìm ra cách xóa các hàng ma trận nếu một ô trong hàng đó thỏa mãn một đặc tính nhất định. Ví dụ:R: Làm thế nào tôi có thể xóa các hàng nếu một phần tử trong một hàng thỏa mãn một số đặc tính?

> mm <- matrix(c(1,2,3,2,3,4,1,2,3,4),5,2) 
> mm 
    [,1] [,2] 
[1,] 1 4 
[2,] 2 1 
[3,] 3 2 
[4,] 2 3 
[5,] 3 4 

Tôi muốn xóa hàng nếu các yếu tố cột 1 trong hàng đó là 2. Cuối cùng tôi muốn điều này:

[,1] [,2] 
[1,] 1 4 
[2,] 3 2 
[3,] 3 4 

Làm thế nào tôi có thể làm điều này?

Và phương pháp tổng quát hơn nếu thay vì xóa tất cả các hàng là phần tử cột đầu tiên là 2, tôi cần xóa các hàng mà phần tử cột đầu tiên tương ứng với tập hợp các số nằm trong danh sách? Ví dụ:

delete_list <- c(2,3) 

Cách tốt nhất để làm điều này là gì?

Cảm ơn bạn trước.

+0

Chứa bên trong [Cách chọn hàng từ data.frame với 2 điều kiện] (http://stackoverflow.com/questions/1536590/how-to-select-rows-from-data-frame-with-2-conditions) (và trong mọi giới thiệu về hướng dẫn R từng viết). –

Trả lời

14

Chỉ cần sử dụng

mm2 <- mm[mm[,1]!=2,] 

này hoạt động vì

mm[,1] != 2 

lợi nhuận

[1] TRUE FALSE TRUE FALSE TRUE 

và về cơ bản bạn đang sử dụng mảng boolean này để chọn hàng để chọn.

2

Không thử nghiệm ...

newmat <- mm[mm[,1]!=2,] 

về cơ bản là những gì tôi nghĩ rằng bạn đang sau.

Edit: damn, ninja'd by one minute!

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