Я пытаюсь определить, как фильтровать некоторые наблюдения из большого набора данных, используя dplyr и grepl. Я не привязан к grepl, если другие решения будут более оптимальными.
Возьмем этот образец df:
df1 <- data.frame(fruit=c("apple", "orange", "xapple", "xorange", 
                          "applexx", "orangexx", "banxana", "appxxle"), group=c("A", "B") )
df1
#     fruit group
#1    apple     A
#2   orange     B
#3   xapple     A
#4  xorange     B
#5  applexx     A
#6 orangexx     B
#7  banxana     A
#8  appxxle     B
 Я хочу:
- отфильтруйте те случаи, начинающиеся с 'x'
 - отфильтруйте те случаи, заканчивающиеся на 'xx'
 
Мне удалось решить, как избавиться от всего, что содержит "x" или "xx", но не начинается с или заканчивается. Вот как избавиться от всего, что "xx" внутри (не просто заканчивается):
df1 %>%  filter(!grepl("xx",fruit))
#    fruit group
#1   apple     A
#2  orange     B
#3  xapple     A
#4 xorange     B
#5 banxana     A
 Это, очевидно, "ошибочно" (с моей точки зрения) отфильтровано "appxxle".
 Я никогда полностью не справился с регулярными выражениями. Я пытаюсь изменить код, например: grepl("^(?!x).*$", df1$fruit, perl = TRUE) чтобы попытаться заставить его работать в команде фильтра, но я не совсем понял его,
Ожидаемый результат:
#      fruit group
#1     apple     A
#2    orange     B
#3   banxana     A
#4   appxxle     B
  Я хотел бы сделать это внутри dplyr если это возможно.