[R] assign

Fox, John jfox at mcmaster.ca
Sat Apr 9 22:47:47 CEST 2016


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:r-help-bounces at r-project.org] On Behalf Of Georges
> Monette
> Sent: April 9, 2016 3:04 PM
> To: r-help at r-project.org
> 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 [r-help-bounces at r-project.org] on behalf of Val
> > [valkremk at gmail.com]
> > Sent: April 8, 2016 10:21 PM
> > To: r-help at R-project.org (r-help at r-project.org)
> > 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]]
> >
> > ______________________________________________
> > 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.
> 
> ______________________________________________
> 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.



More information about the R-help mailing list