R 3.4.2 OS X Colleagues I would appreciate some help with regular expressions. I have string that looks like: " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1,1) ,SIGMA(2,1) ,SIGMA(2,2)? In the entries that contain: (X,Y) # for example, SIGMA(1,1) I would like to replace the comma with a period, e.g., SIGMA(1.1) but NOT the other commas The end-result would be: " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1.1) ,SIGMA(2.1) ,SIGMA(2.2)? Can someone provide the regular expression code to accomplish this? Thanks. Dennis Dennis Fisher MD P < (The "P Less Than" Company) Phone / Fax: 1-866-PLessThan (1-866-753-7784) www.PLessThan.com
Hi Dennis, How about: # define the two values to search for x<-2 y<-3 # create your search string and replacement string repstring<-paste(x,y,sep=",") newstring<-paste(x,y,sep=".") # this is the string that you want to change thetastring<-"SIGMA(2,3)" sub(repstring,newstring,thetastring) [1] "SIGMA(2.3)" Use gsub if you want to change multiple values Jim On Tue, Feb 13, 2018 at 1:22 PM, Dennis Fisher <fisher at plessthan.com> wrote:> R 3.4.2 > OS X > > Colleagues > > I would appreciate some help with regular expressions. > > I have string that looks like: > " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1,1) ,SIGMA(2,1) ,SIGMA(2,2)? > > In the entries that contain: > (X,Y) # for example, SIGMA(1,1) > I would like to replace the comma with a period, e.g., SIGMA(1.1) but NOT the other commas > > The end-result would be: > " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1.1) ,SIGMA(2.1) ,SIGMA(2.2)? > > Can someone provide the regular expression code to accomplish this? > Thanks. > > Dennis > > Dennis Fisher MD > P < (The "P Less Than" Company) > Phone / Fax: 1-866-PLessThan (1-866-753-7784) > www.PLessThan.com > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
> On Feb 12, 2018, at 6:22 PM, Dennis Fisher <fisher at plessthan.com> wrote: > > R 3.4.2 > OS X > > Colleagues > > I would appreciate some help with regular expressions. > > I have string that looks like: > " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1,1) ,SIGMA(2,1) ,SIGMA(2,2)? > > In the entries that contain: > (X,Y) # for example, SIGMA(1,1) > I would like to replace the comma with a period, e.g., SIGMA(1.1) but NOT the other commas > > The end-result would be: > " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1.1) ,SIGMA(2.1) ,SIGMA(2.2)? > > Can someone provide the regular expression code to accomplish this?gsub( "([(]\\d+)([,])(\\d+[)])", "\\1.\\3", x)\ #----------- [1] "ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1.1) ,SIGMA(2.1) ,SIGMA(2.2)"> Thanks. > > Dennis > > Dennis Fisher MD > P < (The "P Less Than" Company) > Phone / Fax: 1-866-PLessThan (1-866-753-7784) > www.PLessThan.com > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law
You can either use positive lookahead/lookbehind - but support for that is a bit flaky. Or write a proper regex, and use backreferences to keep what you need. R > x <- "abc 1,1 ,1 1, x,y 2,3 " R > gsub("(\\d),(\\d)", "\\1.\\2", x, perl = TRUE) [1] "abc 1.1 ,1 1, x,y 2.3 " B.> On Feb 12, 2018, at 9:34 PM, Jim Lemon <drjimlemon at gmail.com> wrote: > > Hi Dennis, > How about: > > > # define the two values to search for > x<-2 > y<-3 > # create your search string and replacement string > repstring<-paste(x,y,sep=",") > newstring<-paste(x,y,sep=".") > # this is the string that you want to change > thetastring<-"SIGMA(2,3)" > sub(repstring,newstring,thetastring) > [1] "SIGMA(2.3)" > > Use gsub if you want to change multiple values > > Jim > > On Tue, Feb 13, 2018 at 1:22 PM, Dennis Fisher <fisher at plessthan.com> wrote: >> R 3.4.2 >> OS X >> >> Colleagues >> >> I would appreciate some help with regular expressions. >> >> I have string that looks like: >> " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1,1) ,SIGMA(2,1) ,SIGMA(2,2)? >> >> In the entries that contain: >> (X,Y) # for example, SIGMA(1,1) >> I would like to replace the comma with a period, e.g., SIGMA(1.1) but NOT the other commas >> >> The end-result would be: >> " ITERATION ,THETA1 ,THETA2 ,THETA3 ,THETA4 ,THETA5 ,THETA6 ,THETA7 ,SIGMA(1.1) ,SIGMA(2.1) ,SIGMA(2.2)? >> >> Can someone provide the regular expression code to accomplish this? >> Thanks. >> >> Dennis >> >> Dennis Fisher MD >> P < (The "P Less Than" Company) >> Phone / Fax: 1-866-PLessThan (1-866-753-7784) >> www.PLessThan.com >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.