问题
I want to find multiple strings and put it in a variable, however I keep getting errors.
queries <- httpdf %>% filter(str_detect(payload, "create" || "drop" || "select"))
Error: invalid 'x' type in 'x || y'
queries <- httpdf %>% filter(str_detect(payload, "create" | "drop" | "select"))
Error: operations are possible only for numeric, logical or complex types
queries1 <- httpdf %>% filter(str_detect(payload, "create", "drop", "select"))
Error: unused arguments ("drop", "select")
None of these worked. Is there another way to do it with str_detect
or should i try something else? I want them to show up as in the same column as well.
回答1:
An even simpler way, in my opinion, for your quite short list of strings you want to find can be:
queries <- httpdf %>% filter(str_detect(payload, "create|drop|select"))
As this is actually what
[...]
paste(c("create", "drop", "select"),collapse = '|'))
[...]
does, as recommended by @penguin before.
For a longer list of strings you want to detect I would first store the single strings into a vector and then use @penguin's approach, e.g.:
strings <- c("string1", "string2", "string3", "string4", "string5", "string6")
queries <- httpdf %>%
filter(str_detect(payload, paste(strings, collapse = "|")))
This has the advantage that you can easily use the vector strings
later on as well if you want to or have to.
回答2:
This is a way to solve this problem:
queries1 <- httpdf %>%
filter(str_detect(payload, paste(c("create", "drop", "select"),collapse = '|')))
来源:https://stackoverflow.com/questions/35962426/multiple-strings-with-str-detect-r