[R] vectorized sub, gsub, grep, etc.
Christos Hatzis
christos.hatzis at nuverabio.com
Tue Oct 7 23:06:15 CEST 2008
John,
Try the following:
> mapply(function(p, r, x) sub(p, r, x, fixed = TRUE), p=patt, r=repl, x=X)
b cd a
"aB" "CD" "ef"
-Christos
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Thaden, John J
> Sent: Tuesday, October 07, 2008 3:59 PM
> To: r-help at r-project.org
> Cc: jjthaden at flash.net
> Subject: [R] vectorized sub, gsub, grep, etc.
>
> R pattern-matching and replacement functions are
> vectorized: they can operate on vectors of targets.
> However, they can only use one pattern and replacement.
> Here is code to apply a different pattern and replacement for
> every target. My question: can it be done better?
>
> sub2 <- function(pattern, replacement, x) {
> len <- length(x)
> if (length(pattern) == 1)
> pattern <- rep(pattern, len)
> if (length(replacement) == 1)
> replacement <- rep(replacement, len)
> FUN <- function(i, ...) {
> sub(pattern[i], replacement[i], x[i], fixed = TRUE)
> }
> idx <- 1:length(x)
> sapply(idx, FUN)
> }
>
> #Example
> X <- c("ab", "cd", "ef")
> patt <- c("b", "cd", "a")
> repl <- c("B", "CD", "A")
> sub2(patt, repl, X)
>
> -John
>
> Confidentiality Notice: This e-mail message, including
> a...{{dropped:8}}
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>
More information about the R-help
mailing list