I don't now whether or not this is less "kludgy" than the explicit loop
(loops are implicitly used anyway), but

Reduce(function(x1,x2)gsub(x2,"something else",x1),x, init=y)

does it using gsub. Note, however, that this will **not** work if the
"something else" regular expression itself contained elements of x in the
"wrong" order. I leave it as an exercise to figure out why not. Note also
that this is almost certainly less efficient than your "kludgy" loop, too.

Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
 
 
-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On
Behalf Of Christian Raschke
Sent: Monday, February 22, 2010 10:20 AM
To: r-help@r-project.org
Subject: Re: [R] gsub patterns from vector elements w/out loop?

Marianne,

The function substring2 from the Hmisc packages works nicely for me to 
do this (without explicit gsub, though):

x<- c("one","two")
y<- paste(rep(x,2),"blah")

y
[1] "one blah" "two blah" "one blah" "two blah"

substring2(y,x)<- "something else"

y
[1] "something else blah" "something else blah" "something else blah"
"something else blah"


Christian





On 02/22/2010 10:25 AM, Marianne Promberger wrote:
> Dear list,
>
> I have two vectors:
>
> x<- c("one","two")
> y<- paste(rep(x,2),"blah")
>
> I want to replace all occurrences of each element of x in y with
> something else, so that y looks like this:
>
> y
> [1] "something else blah" "something else blah" "something else blah"
> [4] "something else blah"
>
> I can do this using a loop:
>
> for ( i in 1:length(x) ) {
>    y<- gsub(x[i],"something else",y)
> }
>
> Surely, there must be a less kludgy way?
>
> I tried looking at the different apply()s but am not getting anywhere,
> partly because I lack the mental flexibility to combine the fact that
> I am applying gsub() to y but now want to apply that to x ...  erm. :/
>
> Marianne
>
>    


-- 
Christian Raschke
Department of Economics
and
ISDS Research Lab (HSRG)
Louisiana State University
Patrick Taylor Hall, Rm 2128
Baton Rouge, LA 70803
(225)226-0017
cras...@lsu.edu

______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to