使用Filter()和str_detect()按多个模式筛选
我想使用filter()和str_detect()对多个模式进行匹配来过滤数据帧,而不需要多个str_detect()函数调用。在下面的示例中,我想过滤数据帧使用Filter()和str_detect()按多个模式筛选,r,stringr,tidyverse,stringi,R,Stringr,Tidyverse,Stringi,我想使用filter()和str_detect()对多个模式进行匹配来过滤数据帧,而不需要多个str_detect()函数调用。在下面的示例中,我想过滤数据帧df,以仅显示包含字母af和o的行 df <- data.frame(numbers = 1:52, letters = letters) df %>% filter( str_detect(.$letters, "a")| str_detect(.$letters, "f")|
df
,以仅显示包含字母a
f
和o
的行
df <- data.frame(numbers = 1:52, letters = letters)
df %>%
filter(
str_detect(.$letters, "a")|
str_detect(.$letters, "f")|
str_detect(.$letters, "o")
)
# numbers letters
#1 1 a
#2 6 f
#3 15 o
#4 27 a
#5 32 f
#6 41 o
并接收以下错误
警告消息:在stri_detect_regex(字符串、模式、opts_regex)中=
选项(模式)):较长的对象长度不是较短对象长度的倍数
对象长度
使用filter()和str_detect()完成此操作的正确语法如下
更正,谢谢。总是在学习。我一直在使用case_when()并感到困惑
df %>%
filter(
str_detect(.$letters, c("a", "f", "o"))
)
# numbers letters
#1 1 a
#2 15 o
#3 32 f
df %>%
filter(
str_detect(letters, "a|f|o")
)
# numbers letters
#1 1 a
#2 6 f
#3 15 o
#4 27 a
#5 32 f
#6 41 o