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"