[R] match() indexing

Hane, Christopher A christopher.hane at ingenixconsulting.com
Wed Jul 1 20:51:03 CEST 2009


 
 Hello,

I'm trying to vectorize some assignment statements using match(), but
can't seem to get it correct.

I have 2 data frames each with a key column of unique values. I want to
copy a column from one frame to another where the key values are the
same.  The data frames are not the same length, and the set of keys is
non-overlapping (each frame has keys not in the other).

Example:
x <- data.frame(id=c(1,3,4,6,7,9,10), r=runif(7))
> x
  id         r
1  1 0.4243219
2  3 0.2389127
3  4 0.7094532
4  6 0.2053836
5  7 0.9630027
6  9 0.1218458
7 10 0.9183175
> y <- data.frame(id=c(1,2,4,7,8,9,10,11,12))
> y
  id
1  1
2  2
3  4
4  7
5  8
6  9
7 10
8 11
9 12

I want to copy the x$r values to y to obtain
>y
  id	r
1  1	0.4243219
2  2	NA
3  4	0.7094532
4  7	0.9630027
5  8	NA
6  9	0.1218458
7 10	0.9183175
8 11	NA
9 12	NA

xIdx <- match(x$id,y$id) yields a vector of length x, so it cannot be
used directly to copy to y. 

Any help in vectorizing this assignment would be most welcome.

Chris

This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or his or her authorized agent, the reader is hereby notified
that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.




More information about the R-help mailing list