Skip to content
Prev 5554 / 15379 Next

[R-es] Cortar una cadena por un caracter solo cuando no forma parte de una subcadena entrecomillada

Creo que esto Funciona:

## --------------------------------
x <- '1,2,"algo;todo"; 3,"cosa; mala"; 4,2,3,7;'
m <- gregexpr('"[^"]*"', x)
blanks <- function(n) {
   vapply(Map(rep.int, rep.int(" ", length(n)), n, USE.NAMES = FALSE),
          paste, "", collapse = "")
}
s <- x
regmatches(s, m) <- Map(blanks, lapply(regmatches(s, m), nchar))
m <- gregexpr("; *", s)
cbind(regmatches(x, m, invert = TRUE)[[1]])
## --------------------------------

La idea la he tomado del uno de los ejemplo del help(regmatches), donde 
se explica mejor su funcionamiento. A partir de aquí se podría hacer una 
función "strsplit.with.deli", que entre otras cosas solucionaría algunos 
de los fallos de importación del paquete "pxR".

Fran

El 18/02/2013 13:05, Carlos J. Gil Bellosta escribió: