una separar how from extraer column characters caracteres cadenas cadena r strsplit

separar - strsplit in r



Cómo usar la función strsplit con un punto (3)

Además de strsplit() , también puedes usar scan() . Tratar:

scan(what = "", text = s, sep = ".") # Read 4 items # [1] "I" "want" "to" "split"

Me gustaría dividir la siguiente cadena por sus puntos. Intenté strsplit() con "." en el argumento split , pero no obtuve el resultado que quiero.

s <- "I.want.to.split" strsplit(s, ".") [[1]] [1] "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

El resultado que quiero es dividir s en 4 elementos en una lista, de la siguiente manera.

[[1]] [1] "I" "want" "to" "split"

¿Qué tengo que hacer?


Al usar una expresión regular en el argumento split de strsplit() , debe escapar del . con //. , o use una charclass [.] . De lo contrario lo usas . como su carácter especial que significa "cualquier carácter individual".

s <- "I.want.to.split" strsplit(s, "[.]") # [[1]] # [1] "I" "want" "to" "split"

Pero el método más eficiente aquí es usar el argumento fixed en strsplit() . El uso de este argumento omitirá el motor de expresiones regulares y buscará una coincidencia exacta de "." .

strsplit(s, ".", fixed = TRUE) # [[1]] # [1] "I" "want" "to" "split"

Y, por supuesto, puede ver help(strsplit) para obtener más información.


Necesita colocar el punto . dentro de una clase de caracteres o preceda con dos barras invertidas para escapar, ya que el punto es un carácter de significado especial en expresiones regulares que significa "coincide con cualquier carácter individual (excepto la nueva línea)"

s <- ''I.want.to.split'' strsplit(s, ''//.'') # [[1]] # [1] "I" "want" "to" "split"