x<- "2,5-7,10,12-15"
source(textConnection(paste("c(", gsub("\\-", ":", x), ")")))$value
[1] 2 5 6 7 10 12 13 14 15
On Wed, Aug 14, 2013 at 8:10 PM, Bert Gunter <gunter.berton at gene.com> wrote:
Neither gsubfn nor eval(parse)) is required, of course:
x<- "2,5-7,10,12-15"
z <-strsplit(scan(text=x,sep=",",wh="a"),split="-") ## use scan to
vectorize the string
l <- lapply(z,as.numeric)
unlist(lapply(l,function(x){
last <- x[length(x)] ## alternately could use if() on the length of x
seq(from=x[1],to=last)
}))
[1] 2 5 6 7 10 12 13 14 15
Cheers,
Bert
On Wed, Aug 14, 2013 at 3:34 PM, arun <smartpink111 at yahoo.com> wrote:
Hi,
May be this helps:
library(gsubfn)
as.numeric(strsplit(gsub("[c() ]","",gsubfn("([0-9]+)-([0-9]+)",
~as.numeric(seq(x,y)),x)),",")[[1]])
#[1] 2 5 6 7 10 12 13 14 15
A.K.
----- Original Message -----
From: Chris Stubben <stubben at lanl.gov>
To: r-help at r-project.org
Cc:
Sent: Wednesday, August 14, 2013 1:41 PM
Subject: [R] convert delimited strings with ranges to numeric
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
--
Chris Stubben
Los Alamos National Lab
Bioscience Division
MS M888
Los Alamos, NM 87545