Hi Georges,

Very clever, and your first solution isn't much more complicated in the regular 
expression than my solution -- and simpler in the sense that it's all done in 
one command.  

I think that your solutions are a little more fragile in that they assume a 
somewhat more consistent structure to the strings (a second dash, which may be 
implied by the original question).

Best,
 John

> -----Original Message-----
> From: R-help [mailto:[email protected]] On Behalf Of Georges
> Monette
> Sent: April 9, 2016 3:04 PM
> To: [email protected]
> Subject: Re: [R] assign
> 
> Hi,
> 
> I couldn't resist these two suggestions:
> 
> strings <- c("ASk/20005-01-45/90", "Alldatk/25-17-4567/990")
> 
> x <- as.numeric(gsub("^[^-]*-|-.*$","",strings))
> 
> or
> 
> x <- as.numeric(sub("^[^-]*-([0-9]+)-.*$","\\1",strings))
> 
> Best,
> Georges
> 
> ---------------------
> Georges Monette, York University, Toronto
> 
> On 08/04/2016 10:53 PM, Fox, John wrote:
> > Dear Val,
> >
> > Your question isn't entirely clear (to me), but this is what I think you 
> > want
> to do:
> >
> > ------------------ snip ----------------
> >
> >> strings <- c("ASk/20005-01-45/90", "Alldatk/25-17-4567/990") location
> >> <- regexpr("-[0-9]*", strings) x
> > [1] "01" "17"
> >> x <- substring(strings, location + 1, location + attr(location,
> >> "match.length") - 1)
> >> as.numeric(x)
> > [1]  1 17
> >
> > ------------------ snip ----------------
> >
> > I hope this helps,
> >   John
> >
> > -----------------------------
> > John Fox, Professor
> > McMaster University
> > Hamilton, Ontario
> > Canada L8S 4M4
> > web: socserv.mcmaster.ca/jfox
> >
> >
> > ________________________________________
> > From: R-help [[email protected]] on behalf of Val
> > [[email protected]]
> > Sent: April 8, 2016 10:21 PM
> > To: [email protected] ([email protected])
> > Subject: [R] assign
> >
> > Hi all
> >   I am trying t extract  a variable from a column
> >
> >        ASk/20005-01-45/90
> >
> >       Alldatk/25-17-4567/990
> >
> > I want to assign  a variable to the numbers coming the first"-"
> >
> > x=01 for the first and
> > x=17  for teh second
> >
> > I tried using gsub but did not work
> >
> > x=gsub("-")
> >
> > any help?
> >
> >          [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [email protected] 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.
> >
> > ______________________________________________
> > [email protected] 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.
> 
> ______________________________________________
> [email protected] 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.

______________________________________________
[email protected] 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.

Reply via email to