R: Как удалить строки, если элемент в строке удовлетворяет определенной характеристике?

Я пытаюсь выяснить способ удаления строк матрицы, если ячейка в этой строке удовлетворяет определенной характеристике. Например:

> 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

Я хочу удалить строки, если элемент 1-го столбца в этой строке равен 2. В конце я хочу этого:

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

как я мог это сделать?

а как насчет более общего метода, если вместо удаления всех строк, первый элемент столбца которых равен 2, мне нужно удалить строки, первый элемент столбца которых соответствует набору номера, которые содержатся в списке? Например

delete_list <- c(2,3)

каков наилучший способ сделать это?

спасибо заранее.

2 ответов


просто использовать

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

это работает, потому что

mm[,1] != 2

возвращает

[1]  TRUE FALSE  TRUE FALSE  TRUE

и по существу вы используете этот логический массив, чтобы выбрать, какие строки выбрать.


Не проверял...

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

это в основном то, что я думаю, что вы после.

Edit: черт, ниндзя на одну минуту!