On Aug 14, 2013, at 12:41 PM, Chris Stubben <stub...@lanl.gov> wrote:

> Is there an easy way to convert character strings with comma-separated 
> numbers and ranges to a numeric vector?
> 
> x<-  "2,5-7,10,12-15"
> 
> [1]  2  5  6  7 10 12 13 14 15
> 
> Thanks,
> Chris
> 



There is a general admonishment to not use the idiom eval(parse(text = ...)) 
which has become a 'fortune', however in this case:

x <-  "2,5-7,10,12-15"

> eval(parse(text = paste("c(", gsub("\\-", ":", x), ")")))
[1]  2  5  6  7 10 12 13 14 15


The result of the inner use of gsub() is:

> gsub("\\-", ":", x)
[1] "2,5:7,10,12:15"


which converts the '-' to ':', which can then be parsed as a sequence operator. 
The paste() creates:

> paste("c(", gsub("\\-", ":", x), ")")
[1] "c( 2,5:7,10,12:15 )"


which can then be evaluated as a single vector.


Regards,

Marc Schwartz

______________________________________________
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