I want to find an efficient way (and code elegant) of group_by where the groups are found by a regex which will run inside a vector of texts (tweets). There might be tweets which show in more than one count, but it's not an issue since I just want to count how many times the candidate is quoted.
The following code actually works but I want the code to identify the regex expressions and group by it, I've tried trough str_count but dind't achieve much.
##Data example:
library('dplyr')
all.t <- data.frame(text =  c("@dottore_marcelo @LorranParadiso @1pedroOsilva @Ronaldocampos00 @jairbolsonaro Mas quem disse que @jairbolsonaro vai resolver todos os problemas do país tem 4 anos? Ele é um ponto de inflexão, quem sabe depois de 8 anos elegeremos um rocha ou um Amoedo, pois a estrada já estará pavimentada. Vamos pensar que no longo prazo a disputa será entre liber e conser",
                              "@Ideias_Radicais Opiniao sobre a Marina Silva? Geraldo Alckmin? vai fazer oq se eles ganhar as eleiçoes?",                                                                                                                                                                          
                              "@pkogos E se a Marina Silva ou o Ciro gomes ganhar?",
                              "@pkogos A França está dominada pela mentalidade esquerdista ! Se a Marina Silva ou o Ciro Ganhar vai acontecer o mesmo" ,                                                                                                                                                                                                                                                
                              "@cirogomes @guilhermefpenna @geraldoalckmin @MarinaSilva @jairbolsonaro @alvarodias_ Passo. Próximo.",                                                                                                                                                                                                                                                                   
                              "@joaopedro27696 @marx_araujo @folha 1) Não sou robô; 2) É \"Amoêdo\" e não \"Amoado\"; 3) Não voto com base em pesquisa, e sim em ideias, currículo e histórico... @jairbolsonaro é populista"),
                    stringsAsFactors = FALSE
)
##regex I want to group_by 
candidatos <- c('bolsonaro|@jairbolsonaro',
                'amoedo|@joaoamoedonovo',
                'marina silva|@marinasilva')
## this is the part I want to improve
bind_rows(
all.t %>% filter(grepl(candidatos[1], text, ignore.case = TRUE)) %>% 
count() %>% mutate(candidato = 'Bolsonaro')
all.t %>% filter(grepl(candidatos[2], text, ignore.case = TRUE)) %>% 
count() %>% mutate(candidato = 'Marina Silva')
all.t %>% filter(grepl(candidatos[3], text, ignore.case = TRUE)) %>%
 count() %>% mutate(candidato = 'João Amoêdo')
)          
The output I get is exactly what I want, but if I add too many classes it's a pain to make for each.
       n candidato       
   <int> <chr>      
 1   3  Bolsonaro
 2   1  Marina Silva
 3   4  João Amoêdo
 
    