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.

