On 14.11.2011 11:27, Petr PIKAL wrote:
Hi

Thank you. It is a pure magic, something taught in Unseen University.

this is what I got as a help for selecting only letters from set of
character vector.

vzor
  [1] "61A"     "62C/27"  "65A/27"  "66C/29"  "69A/29"  "70C/31"
"73A/31"
  [8] "74C/33"  "77A/33"  "81A/35"  "82C/37"  "85A/37"  "86C/39"
"89A/39"
[15] "90C/41"  "93A/41"  "94C/43"  "97A/43"  "98C/45"  "101A/45"
"102C/47"
[22] "105A/47" "106C/49" "109A/49" "110C/51" "113A/51"

gsub("[^A-z]", "", vzor)
  [1] "A" "C" "A" "C" "A" "C" "A" "C" "A" "A" "C" "A" "C" "A" "C" "A" "C"
[18] "A" "C" "A" "C" "A" "C" "A" "C" "A"

Therefore I expected that

sub("m5.", "\\1", mena) or sub("m5.", "", mena)

selects what I wanted. But it was not the case.

Please can you correct me when I try to evaluate your solution?

gsub(".*_(m5.).*", "\\1", mena)

or

gsub(".*(m5.).*", "\\1", mena)

.* matches any characters

Yes.

() negation? or matching selection for back reference?

The latter. See books about ergular expressions. I think it is also mentioned in ?regexp and with an example in ?gsub



Finally the expressin matches whole string and evaluates what is matched
by parenthesised value. This evaluation is returned by backreference.

Is it correct evaluation?

Indeed, where \\1 is the first backreference.

Best,
Uwe




Regards
Petr


On 14.11.2011 10:22, Petr PIKAL wrote:
Hi

On 11/14/2011 07:45 PM, Petr PIKAL wrote:
Dear all

I am again (as usual) lost in regular expression use for selection.
Here
are my data:

dput(mena)
c("138516_10g_50ml_50c_250utes1_m53.00-_s1.imp",
"138516_10g_50ml_50c_250utes1_m54.00_s1.imp",
"138516_10g_50ml_50c_250utes1_m55.00_s1.imp",
"138516_10g_50ml_50c_250utes1_m56.00_s1.imp",
"138516_10g_50ml_50c_250utes1_m57.00_s1.imp",
"138516_10g_50ml_50c_250utes1_m58.00_s1.imp",
"138516_10g_50ml_50c_250utes1_m59.00_s1.imp")

I want to select only values "m" foolowed by numbers from 53 to 59.

I used

sub("m5.", "", mena)

which correctly selects those m53 - m59 values but, in contrary to
my
expectation, it replaced the selected values with specified
replacement -
in that case empty string.

What I shall use if I want to get rid of all but m53-m59 from those
strings?

Hi Petr,
How about:

grep("m5",mena)

It gives numeric values which tells me that there is a match in each
string, but as a result I need only

m53-m59 substrings.


gsub(".*_(m5.).*", "\\1", mena)

Uwe Ligges



Regards
Petr




Jim


______________________________________________
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.


______________________________________________
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