[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