Взять список строк:
strings <- c("ABC_XZY", "qwe_xyz", "XYZ")
Я бы хотел получить все элементы в strings
, которые не содержат заданную c подстроку
avoid <- c("ABC")
Я могу сделать это
library(stringr)
library(dplyr)
library(purrr)
strings %>%
.[!map_lgl(., str_detect, avoid)]
[1] "qwe_xyz" "XYZ"
Что я хотел бы сделать, это указать несколько подстрок
avoid_2 <- c("ABC", "qwe")
И затем отобразить список по-прежнему (не работает)
strings %>%
.[!map_lgl(., str_detect, avoid_2)]
Error: Result 1 must be a single logical, not a logical vector of length 2
То, что я хочу, это
[1] "XYZ"
Ошибка очевидна - каждый элемент string
генерирует логическую для каждого элемента avoid_2
, всего 2 логических / элемента и map_lgl
может обрабатывать только один элемент.
Конечно, я могу выполнять каждую подстроку отдельно, но я не хочу - я хочу составить список подстрок
не хочу, но работает
strings %>%
.[!map_lgl(., str_detect, "ABC")] %>%
.[!map_lgl(., str_detect, "qwe")]