Hello, I would like to substitute a substring of characters defined by a specific start and end sequence. i.e. in the example matrix below, I would like to substitute ".:X:" with "", where X varies in sequence... m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56", ".:58:50,8", ".:13:0,13", ".:114:114,0", ".:75:75,0"), nrow=2) output required: [,1] [,2] [,3] [,4] [1,] "0,0" "193,1" "50,8" "114,0" [2,] "0,2" "0,56" "0,13" "75,0" Thank you for any help Sarah [[alternative HTML version deleted]]
Will this do:> m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56", ".:58:50,8", ".:13:0,13", ".:114:114,0", ".:75:75,0"), nrow=2) > > m[,1] [,2] [,3] [,4] [1,] ".:0:0,0" ".:194:193,1" ".:58:50,8" ".:114:114,0" [2,] ".:2:0,2" ".:56:0,56" ".:13:0,13" ".:75:75,0"> sub("^\\.:[^:]*:", "", m)[,1] [,2] [,3] [,4] [1,] "0,0" "193,1" "50,8" "114,0" [2,] "0,2" "0,56" "0,13" "75,0">On Mon, Jul 2, 2012 at 4:15 AM, Sarah Auburn <sauburn at yahoo.com> wrote:> Hello, > I?would like to substitute a substring of characters defined by a specific start and end sequence. > i.e. in the example?matrix below, I would like to substitute ".:X:" with "", where X varies in sequence... > > m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56", ".:58:50,8", ".:13:0,13",? ".:114:114,0", ".:75:75,0"), nrow=2) > > output required: > ???? [,1]????? [,2]????????? [,3]??????? [,4] > [1,] "0,0" "193,1" "50,8" "114,0" > [2,] "0,2" "0,56"?? "0,13" "75,0" > > Thank you for any help > Sarah > ? ? ? ? [[alternative HTML version deleted]] > > > ______________________________________________ > 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. >-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.
Hi I am not at all an expert in regular expressions but gsub("^[[:punct:]]+[[:digit:]]+:", "",m) does the output you want. Maybe by chance :-) Regards Petr> > Hello, > I would like to substitute a substring of characters defined by aspecific> start and end sequence. > i.e. in the example matrix below, I would like to substitute ".:X:" with> "", where X varies in sequence... > > m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56",".:58:50,8",> ".:13:0,13", ".:114:114,0", ".:75:75,0"), nrow=2) > > output required: > [,1] [,2] [,3] [,4] > [1,] "0,0" "193,1" "50,8" "114,0" > [2,] "0,2" "0,56" "0,13" "75,0" > > Thank you for any help > Sarah > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
On Jul 2, 2012, at 4:15 AM, Sarah Auburn wrote:> Hello, > I would like to substitute a substring of characters defined by a > specific start and end sequence. > i.e. in the example matrix below, I would like to substitute ".:X:" > with "", where X varies in sequence... > > m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56", ".: > 58:50,8", ".:13:0,13", ".:114:114,0", ".:75:75,0"), nrow=2)sub("\\..+\\:", "", m) [,1] [,2] [,3] [,4] [1,] "0,0" "193,1" "50,8" "114,0" [2,] "0,2" "0,56" "0,13" "75,0" You should also look at Holtman's since he is better at this than I am but I didn't really understand how his version worked. Mine is really in three parts. The first entry '\\.' matches the leading dot and it could have been '^\\.' to avoid any confusion with decimal points. The second entry is '.+' which is anything until the third entry '\\:' which ends up matching the last ':' since these are greedy expressions. You could also have done it with "\\.\\:.+\\:" (Now that I look at his again "^\\.:[^:]*:" , I find that I can learn something from it, as often happens when I read his contributions. To my surprise the ':' character does not need to be escaped but can be and the interior of his expression '[^:]' is a negative character- class. It matches anything other than ':' and the '*' following it lets that anything be of any length. And then he didn't need to escape the trailing ':'.) -- David.> > output required: > [,1] [,2] [,3] [,4] > [1,] "0,0" "193,1" "50,8" "114,0" > [2,] "0,2" "0,56" "0,13" "75,0" > > Thank you for any help > Sarah > [[alternative HTML version deleted]]-- David Winsemius, MD West Hartford, CT
Hi, Either of these should work: m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56", ".:58:50,8", ".:13:0,13",? ".:114:114,0", ".:75:75,0"), nrow=2) ?gsub("^\\.:[[:digit:]]+:","",m) ???? [,1]? [,2]??? [,3]?? [,4]?? [1,] "0,0" "193,1" "50,8" "114,0" [2,] "0,2" "0,56"? "0,13" "75,0" ?gsub("^\\.:\\d+:","",m) ???? [,1]? [,2]??? [,3]?? [,4]?? [1,] "0,0" "193,1" "50,8" "114,0" [2,] "0,2" "0,56"? "0,13" "75,0" A.K. ----- Original Message ----- From: Sarah Auburn <sauburn at yahoo.com> To: "r-help at r-project.org" <r-help at r-project.org> Cc: Sent: Monday, July 2, 2012 4:15 AM Subject: [R] R sub query Hello, I?would like to substitute a substring of characters defined by a specific start and end sequence. i.e. in the example?matrix below, I would like to substitute ".:X:" with "", where X varies in sequence... ? m<-matrix(c(".:0:0,0", ".:2:0,2", ".:194:193,1", ".:56:0,56", ".:58:50,8", ".:13:0,13",? ".:114:114,0", ".:75:75,0"), nrow=2) ? output required: ???? [,1]????? [,2]????????? [,3]??????? [,4]???????? [1,] "0,0" "193,1" "50,8" "114,0" [2,] "0,2" "0,56"?? "0,13" "75,0" ? Thank you for any help Sarah ??? [[alternative HTML version deleted]] ______________________________________________ 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.