Try this. We use regexpr to get the positions and strapply puts the values in list s. The unlist statement converts NULL to NA and simplifies the list, s, to a numeric vector. For more info on strapply see http://gsubfn.googlecode.com
library(gsubfn) # strapply x <- c"test1", "bcdtestblabla2.1bla", "cdtestblablabla3.88blabla") dtest.info <- cbind(posn = regexpr("dtest", x), value = { s <- strapply(x, "dtest[^0-9]*([0-9][0-9.]*)", as.numeric) unlist(ifelse(sapply(s, length), s, NA)) }) > # the above may be sufficient but > # if its important to NA out rows with no match add > dtest.info[dtest.info[,1] < 0,] <- NA > dtest.info pos value [1,] NA NA [2,] 3 2.10 [3,] 2 3.88 Why do you want the position? Is there a further transformation needed? What is it? There may be even easier approaches to the entire problem. On Fri, Mar 13, 2009 at 12:25 PM, Tan, Richard <r...@panagora.com> wrote: > Hi, sorry if it is a too stupid question, but how do I a string search > in R: > > I have a dataframe A with A$test like: > > test1 > bcdtestblabla2.1bla > cdtestblablabla3.88blabla > > and I want to search for string that start with 'dtest' and ends with > number and return the location of that substring and the number, so the > end result would be: > > NA NA > 3 2.1 > 2 3.88 > > I find grep can probably do this but I am new to the function so would > like a good example. > > Thanks, > Richard > > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > ______________________________________________ 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.