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@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:[EMAIL PROTECTED] UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
______________________________________________
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.