On Sun, Dec 05, 2010 at 08:04:08AM +0530, Santosh Srinivas wrote: > I am trying to find the function where I can search for a pattern in a > text string (I thought I could use grep for this but no :(). > > > x > [1] "abcdefghijkl" > > I want to find the positions (i.e. equivalent of nchar) for "cd" and > in case there are multiple hits .. then the results as a array
For a single string, for example p <- gregexpr("cd", "abcdecdecdcd")[[1]] p [1] 3 6 9 11 attr(,"match.length") [1] 2 2 2 2 as.numeric(p) # [1] 3 6 9 11 For a vector of strings, for example p <- gregexpr("cd", c("abcde", "acdecde", "abcdecdecdcd", "cdcd")) m <- max(unlist(lapply(p, length))) out <- matrix(nrow=length(p), ncol=m) for (i in seq(nrow(out))) { out[i, seq(length(p[[i]]))] <- p[[i]] } out [,1] [,2] [,3] [,4] [1,] 3 NA NA NA [2,] 2 5 NA NA [3,] 3 6 9 11 [4,] 1 3 NA NA Petr Savicky. ______________________________________________ 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.