[R] vector operation using regexpr?

Charles C. Berry cberry at tajo.ucsd.edu
Thu Aug 21 06:09:40 CEST 2008


On Wed, 20 Aug 2008, John Christie wrote:

> Hi,
>
> Here's my problem... I have a data frame with three columns containing 
> strings.  The first columns is a simple character. I want to get the index of 
> that character in the second column and use it to extract the item from the 
> third column.  I can do this using a scalar method.  But I'm not finding a 
> vector method.  An example is below.
>
> col1      col2      col3
> 'L'         'MAIL '   'PLOY'
>
> What I want to do with the above is find the index of col1 in col2 (4) and 
> then use it to extract the character from col3 ('Y').  I could do the last 
> part if I could get the index in a vector fashion.
>
> So, the shorter question is, how do I get the index of the letter in col1 as 
> it is found in col2?


Let me count the ways... On second thought, let someone else count the 
ways. But here is one

 	## suppose 'df' is your data.frame
  	a.list <- lapply( df, function(x) strsplit(as.character(x), "") )
 	with(a.list, mapply( function(x,y,z) z[x==y], col1, col2, col3 ) )


This will return all matches in each row. You can use 'match(x,y,0)' in 
place of 'x==y' to get just the first one.


And if you KNOW a match in each row exists and is unique, this will work:

 	with(a.list, do.call(rbind,col3)[ do.call(rbind,col2) == col1 ] )

but I would not trust it.

HTH,

Chuck

>
> ______________________________________________
> R-help at 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.
>

Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901



More information about the R-help mailing list