In R, grep di solito corrisponde a un vettore di più stringhe rispetto a una regexp.R grep: abbina una stringa a più modelli
D: C'è la possibilità di abbinare una singola stringa a più espressioni regolari? (senza ricorrere a ogni singolo schema regexp)?
Alcuni retroscena:
ho 7000+ parole chiave come indicatori per diverse categorie. Non riesco a cambiare il dizionario delle parole chiave. Il dizionario ha seguente struttura (parole chiave in Col 1, i numeri indicano le categorie in cui queste parole chiave appartengono a):
ab 10 37 41
abbrach* 38
abbreche 39
abbrich* 39
abend* 37
abendessen* 60 63
aber 20 23 45
abermals 37
Concatenazione tante le parole chiave con "|" non è un modo fattibile (e non saprei quale delle parole chiave ha generato il successo). Inoltre, solo l'inversione di "schemi" e "stringhe" non funziona, poiché i motivi hanno troncamenti, che non funzionerebbero viceversa.
[related question, altro linguaggio di programmazione]
I come i suggerimenti di Dan, ma con un ampio set di dati potresti riscontrare alcuni problemi di velocità significativi. Se vuoi cercare qualcosa in un dizionario e restituire un valore corrispondente, suggerirei un approccio diverso: spezzando le frasi in vettori di singole parole con strsplit e poi applicando una tabella hash per una rapida ricerca. Sto pensando che potresti voler spezzare la parola chiave e gli indicatori di categoria in due colonne separate nel dizionario. Fornirei assistenza lì, ma solo dopo che sarai più chiaro sul desiderio come risultato finale. –
Concordato sulla ristrutturazione dei dati del dizionario e sull'utilizzo di una tabella hash per la ricerca (in base al risultato desiderato), ma la corrispondenza dovrebbe essere relativamente veloce a seconda del numero di stringhe, anche con un numero elevato di parole chiave. Aggiungerò un rapido punto di riferimento alla mia risposta. – danpelota
Se hai davvero un sacco di parole (tipicamente, tutte le parole in una lingua umana, tutte le parole indicizzate da google, ecc.), puoi usare un [albero dei prefissi] (http: // en. wikipedia.org/wiki/Trie) (a volte viene anche chiamato "trie"). Ma non sono a conoscenza di alcuna implementazione in R. –