Подтвердить что ты не робот

Стандартный способ удаления нескольких элементов из фрейма данных

Каков наилучший способ удаления нескольких элементов из фреймворка данных? В моем случае у меня есть все дни месяца в кадре данных и вы хотите удалить несколько дней. Что-то вроде ниже работает отлично на один день.

m[m$date!="01/31/11",]

Однако, если я попробую что-то вроде

m[m$date!=c("01/31/11","01/30/11"),]

Я получаю предупреждающее сообщение

Warning message:
In `!=.default`(m$date, c("01/31/11", "01/30/11")) :
longer object length is not a multiple of shorter object length
Calls: [ ... [.data.frame -> Ops.dates -> NextMethod -> Ops.times -> NextMethod

Кажется, что он работает два дня, но если я добавлю 01/29/11 к вектору, он показывает все дни, но 01/31/11.

4b9b3361

Ответ 1

nzcoops находится на месте с его предложением. Я задал этот вопрос в R Chat некоторое время назад, и Пол Тетор предложил определить новую функцию:

`%notin%` <- function(x,y) !(x %in% y) 

который затем можно использовать следующим образом:

foo <- letters[1:6]

> foo[foo %notin% c("a", "c", "e")]
[1] "b" "d" "f"

Излишне говорить, что этот маленький драгоценный камень теперь находится в моем профиле R и используется довольно часто.

Ответ 2

Я думаю, что вы хотите:

m[!m$date %in% c("01/31/11","01/30/11"),]

Ответ 3

Классный способ - использовать функцию Negate для создания нового:

`%ni%` <- Negate(`%in%`) 

чем вы можете использовать его для поиска непересекающихся элементов