Skip to content

grep for strings

5 messages · Santosh Srinivas, Charles C. Berry, jim holtman +2 more

#
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 :().
[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

Thank you.
#
On Sun, 5 Dec 2010, Santosh Srinivas wrote:

            
Correct, but reading

 	?grep

and running

 	example( grep )

should show you how to do that search.
You will need to deal with the possibility that there are more 'cd's in 
some elements of 'text' than in others.

So, it is not obvious that an _array_ will work without some special 
tooling.

HTH,

Chuck
Charles C. Berry                            Dept of Family/Preventive Medicine
cberry at tajo.ucsd.edu			    UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901
#
starting httpd help server ... done
[1] 3
attr(,"match.length")
[1] 2
On Sat, Dec 4, 2010 at 9:34 PM, Santosh Srinivas
<santosh.srinivas at gmail.com> wrote:

  
    
#
On Sun, Dec 05, 2010 at 08:04:08AM +0530, Santosh Srinivas wrote:
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.