Regex r-多重匹配中的部分匹配
我正在利用下面的代码部分匹配1个匹配,但有一个后续问题:假设我们对鱼有一个额外的标准,我们希望将“狗鱼”同时归类为鱼和狗。这可能吗Regex r-多重匹配中的部分匹配,regex,r,string,match,grepl,Regex,R,String,Match,Grepl,我正在利用下面的代码部分匹配1个匹配,但有一个后续问题:假设我们对鱼有一个额外的标准,我们希望将“狗鱼”同时归类为鱼和狗。这可能吗 d<-data.frame(name=c("brown cat", "blue cat", "big lion", "tall tiger", "black panther", "short cat", "red bird", "short bird stuffed", "big eagle
d<-data.frame(name=c("brown cat", "blue cat", "big lion", "tall tiger",
"black panther", "short cat", "red bird",
"short bird stuffed", "big eagle", "bad sparrow",
"dog fish", "head dog", "brown yorkie",
"lab short bulldog"), label=1:14)
最初的堆栈溢出问题在这里:我会通过交叉连接来解决
library(dplyr)
library(stringi)
key = data_frame(partial = c("cat", "lion", "tiger", "panther",
"bird", "eagle", "sparrow",
"dog", "yorkie", "bulldog"),
category = c("feline", "feline", "feline", "feline",
"avian", "avian", "avian",
"canine", "canine", "canine"))
d %>%
merge(key) %>%
filter(name %>% stri_detect_fixed(partial) )
非常感谢你!我只是在最后弹出了一个聚合,它给了我我想要的!
output_vector <- character(nrow(d))
for(i in seq_along(regexes)){
#Grep through d$name, and when you find matches, insert the relevant 'tag' into
#The output vector
output_vector[grepl(x = d$name, pattern = regexes[[i]][1])] <- regexes[[i]][2]}
d$species <- output_vector
# name label species
#1 brown cat 1 feline
#2 blue cat 2 feline
#3 big lion 3 feline
#4 tall tiger 4 feline
#5 black panther 5 feline
#6 short cat 6 feline
#7 red bird 7 avian
#8 short bird stuffed 8 avian
#9 big eagle 9 avian
#10 bad sparrow 10 avian
#11 dog fish 11 canine, fish
#12 head dog 12 canine
#13 brown yorkie 13 canine
#14 lab short bulldog 14 canine
library(dplyr)
library(stringi)
key = data_frame(partial = c("cat", "lion", "tiger", "panther",
"bird", "eagle", "sparrow",
"dog", "yorkie", "bulldog"),
category = c("feline", "feline", "feline", "feline",
"avian", "avian", "avian",
"canine", "canine", "canine"))
d %>%
merge(key) %>%
filter(name %>% stri_detect_fixed(partial) )