I am trying to replace "+" in a string with another character I am getting odd results using sub and gsub> X<-"one + two" > gsub("+","plus",X)[1] "plusoplusnpluseplus plus+plus plustpluswplusoplus"> sub("+","plus",X)[1] "plusone + two"> X<-"one ~ two"it seems to work fine with other characters:> sub("~","plus",X)[1] "one plus two" How do I enable "+" to be recognised as a normal character? thanks Nevil Amos
Two ways: i) (If you are not using full regular expressions) Set the fixed = TRUE option. ii) Escape it. E.g., gsub("\\+", "plus", X) gsub("+", "plus", X, fixed = TRUE) Read up on ?regexp for an explanation of what's going on. Michael On Sat, Jan 21, 2012 at 2:46 PM, Nevil Amos <nevil.amos at gmail.com> wrote:> I am trying to replace "+" in a string with another character > I am getting odd results using sub and gsub >> X<-"one + two" >> gsub("+","plus",X) > [1] "plusoplusnpluseplus plus+plus plustpluswplusoplus" >> sub("+","plus",X) > [1] "plusone + two" >> X<-"one ~ two" > > it seems to work fine with other characters: > >> sub("~","plus",X) > [1] "one plus two" > > > How do I enable "+" to be recognised as a normal character? > > thanks > > Nevil Amos > > ______________________________________________ > 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.
+ is a metacharacter, and must be escaped:> X <- "one + two" > gsub("\\+", "plus", X)[1] "one plus two" The help for gsub() tells you to read ?regexp - that's where the details of regular expressions as implemented in R are explained. Sarah On Sat, Jan 21, 2012 at 2:46 PM, Nevil Amos <nevil.amos at gmail.com> wrote:> I am trying to replace "+" in a string with another character > I am getting odd results using sub and gsub >> X<-"one + two" >> gsub("+","plus",X) > [1] "plusoplusnpluseplus plus+plus plustpluswplusoplus" >> sub("+","plus",X) > [1] "plusone + two" >> X<-"one ~ two" > > it seems to work fine with other characters: > >> sub("~","plus",X) > [1] "one plus two" > > > How do I enable "+" to be recognised as a normal character? > > thanks > > Nevil Amos >-- Sarah Goslee http://www.functionaldiversity.org
Maybe Matching Threads
- How to remove $ (Dollar sign) from string
- How to replace all <NA> values in a data.frame with another ( not 0) value
- How to plot CI's (llim ulim) on ecodist mgram
- removeing only rows/columns with "na" value from square ( symmetrical ) matrix.
- return the name of source.