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

______________________________________________
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