Р: Как я могу удалить строки, если элемент в строке удовлетворяет определенной характеристике? - PullRequest
7 голосов
/ 07 декабря 2011

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

> 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 ]

14 голосов
/ 07 декабря 2011

Просто используйте

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

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

mm[,1] != 2

возвращает

[1]  TRUE FALSE  TRUE FALSE  TRUE

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

2 голосов
/ 07 декабря 2011

Не проверено ...

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

в основном то, что я думаю, вы ищете.

Редактировать: черт, ниндзя за одну минуту!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...