En R, grep generalmente coincide con un vector de varias cadenas contra una expresión regular.R grep: Empareje una cadena contra varios patrones
P: ¿Existe la posibilidad de unir una sola cadena con varias expresiones regulares? (sin bucles a través de cada patrón de expresiones regulares)?
Algunos antecedentes:
tengo 7000 + palabras clave como indicadores para varias categorías. No puedo cambiar ese diccionario de palabras clave. El diccionario estructura tiene las siguientes palabras clave (en la col 1, los números indican las categorías en las que estos pertenecen a palabras clave):
ab 10 37 41
abbrach* 38
abbreche 39
abbrich* 39
abend* 37
abendessen* 60 63
aber 20 23 45
abermals 37
tantas palabras clave con Concatenación "|" no es una forma factible (y no sabría cuál de las palabras clave generó el hit). Además, simplemente invertir "patrones" y "cadenas" no funciona, ya que los patrones tienen truncamientos, lo que no funcionaría al revés.
[related question, otro lenguaje de programación]
I como las sugerencias de Dan, pero con un gran conjunto de datos, es posible que se encuentre con problemas de velocidad importantes. Si desea buscar algo en un diccionario y devolver un valor correspondiente, sugeriría un enfoque diferente: dividir las oraciones en vectores de palabras individuales con strsplit y luego aplicar una tabla hash para una búsqueda rápida. Estoy pensando que también puede dividir la palabra clave y los indicadores de categoría en dos columnas separadas en el diccionario. Proporcionaría asistencia allí, pero solo después de que tenga más claro que quiere como resultado final. –
Acordé la reestructuración de los datos del diccionario y el uso de una tabla hash para la búsqueda (según el resultado deseado), pero la coincidencia debería ser relativamente rápida dependiendo del número de cadenas, incluso con una gran cantidad de palabras clave. Agregaré un punto de referencia rápido a mi respuesta. – danpelota
Si realmente tiene muchas palabras (típicamente, todas las palabras en un lenguaje humano, todas las palabras indexadas por google, etc.), puede usar un [árbol de prefijos] (http: // en. wikipedia.org/wiki/Trie) (a veces también se llama "trie"). Pero no conozco ninguna implementación en R. –