[R] gsub patterns from vector elements w/out loop?

Christian Raschke crasch2 at tigers.lsu.edu
Mon Feb 22 19:20:00 CET 2010


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
crasch2 at lsu.edu



More information about the R-help mailing list