Как удалить все строки, содержащие символы - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь удалить все строки, содержащие? в любом столбце во фрейме данных. У меня 950 строк по 11 столбцов. Я пытался сделать это, чтобы сделать все сразу.

dataNew <- data %>% filter_all(all_vars(!grepl("?",.)))

и это, чтобы посмотреть, смогу ли я заставить его работать на один столбец.

dataNew <- data[!grepl('?',data$column),]

Обе эти попытки привели к пустой кадр данных. Спасибо за любую помощь, спасибо.

1 Ответ

0 голосов
/ 06 апреля 2020

Мы можем использовать fixed = TRUE, поскольку ? является метасимволом (или экранированием (\\?), или заключать его в квадратную скобку ([?]), когда режим по умолчанию для grep равен fixed = FALSE

library(dplyr)
data %>%
    filter_all(all_vars(!grepl("?",., fixed = TRUE)))
#    col1 col2
#1    1    2

Или используя across из devel версии dplyr

data %>% 
    filter(across(everything(), ~ !grepl("?", ., fixed = TRUE)))
#  col1 col2
#1    1    2

Или используя base R

data[!Reduce(`|`, lapply(data, grepl, pattern = '?', fixed = TRUE)),]

данные

data <- data.frame(col1 = c("?", 1, 3, "?"), col2 = c(1, 2, "?", "?"),
      stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...