2011-10-02 18 views
7

Tengo un corpus: txt = "una capa con diseño dentro de un patrón microelectrónico". quisiera sustituir el término "patrón" exactamente por "forma", trato de escribir un código:¿Cómo puedo reemplazar la cadena exactamente usando gsub()

txt_replaced = gsub("pattern","form",txt) 

Sin embargo, el corpus responsed en txt_replaced es: "una capa formada dentro de una forma de microelectrónica. "

Como puede ver, el término "modelado" se reemplaza incorrectamente por "formado" porque las partes de las características en "patrón" coinciden con "patrón".

Me gustaría preguntar si puedo reemplazar la cadena exactamente usando gsub()? Es decir, solo debe reemplazarse el término con coincidencia exacta.

Tengo sed de una respuesta de la siguiente manera: "una capa con diseño dentro de una forma microelectrónica".

¡Muchas gracias!

+3

encuentre esta pregunta: http://stackoverflow.com/questions/6528258/help-with-complete-word-matching-using-grepl-in-r – kohske

Respuesta

21

Como señaló @koshke, una pregunta muy similar ha sido respondida antes (por mí). ... Pero eso era grep y esto es gsub, entonces lo responderé de nuevo:

"\ <" es una secuencia de escape para el comienzo de una palabra, y ">" es el final. En las cadenas R que necesita para duplicar las barras invertidas, por lo que:

txt <- "a patterned layer within a microelectronic pattern." 
txt_replaced <- gsub("\\<pattern\\>","form",txt) 
txt_replaced 
# [1] "a patterned layer within a microelectronic form." 

O, usted podría utilizar en lugar de \b\< y \>. \b coincide con un límite de palabra para que pueda ser utilizado en ambos extremos>

txt_replaced <- gsub("\\bpattern\\b","form",txt) 

También tenga en cuenta que si desea reemplazar sólo una ocurrencia, se debe utilizar en lugar de subgsub.

Cuestiones relacionadas