如何在管道操作中为不包含单词的元素对向量进行子集化? (我真的很喜欢管道)
我希望有某种方式来反转str_subset
。在以下示例中,我只想返回x
的第二个元素,而不是其中包含hi
的元素:
library(stringr)
x <- c("hi", "bye", "hip")
x %>%
str_dup(2) %>% # just an example operation
str_subset("hi") # I want to return the inverse of this
答案 0 :(得分:5)
您可以使用^(?!.*hi)
断言不包含hi
的字符串;正则表达式使用负前瞻?!
并断言字符串不包含模式.*hi
:
x %>%
str_dup(2) %>% # just an example operation
str_subset("^(?!.*hi)")
# [1] "byebye"
或通过撤消str_detect
来过滤:
x %>%
str_dup(2) %>% # just an example operation
{.[!str_detect(., "hi")]}
# [1] "byebye"