From: Wiener, Matthew <matthew_wiener_at_merck.com>

Date: Tue 21 Jun 2005 - 06:38:10 EST

Date: Tue 21 Jun 2005 - 06:38:10 EST

Federico -

"match" will give you the (first) index of each element of its first argument in its second argument. So match(vector.1, vector.2) tells you where each element of vector.1 appears in vector.2. So if you use "table" on that vector, you'll see how many times each element of vector.2 appears.

Something like:

first.occur <- match(vector.1, vector.2) table(factor(vector.2[first.occur], levels = sort(unique(vector.2)))

(changing it into a factor means you won't lose values of vector.2 that never appear in vector.1.)

An example:

> vec1 <- sample(1:10, 500, replace = TRUE)

> table(vec1)

vec1

1 2 3 4 5 6 7 8 9 10

61 37 43 47 49 59 51 48 53 52

*> vec2 <- 0:11
*

> vec3 <- match(vec1, vec2)

> table(factor(vec2[vec3], levels = sort(unique(vec2))))

0 1 2 3 4 5 6 7 8 9 10 11

0 61 37 43 47 49 59 51 48 53 52 0

*>
*

This also works if one of the members of vec1 is not in vec2 -- that member simply gets ignored. (As you can see if add, say, a "20" at the end of vec1.)

Hope this helps,

Matt Wiener

-----Original Message-----

From: r-help-bounces@stat.math.ethz.ch

[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Federico Calboli
Sent: Monday, June 20, 2005 4:16 PM

To: r-help

Subject: [R] vectorisation suggestion

Hi All,

I am counting the number of occurrences of the terms listed in one vector in another vector.

My code runs:

for( i in 1:length(vector3)){

vector3[i] = sum(1*is.element(vector2, vector1[i])) }

where

vector1 = vector containing the terms whose occurrences I want to count
vector2 = made up of a number of repetitions of all the elements of
vector1

vector3 = a vector of NAs that is meant to get the result of the
counting

My problem is that vector1 is about 60000 terms, and vector2 is 620000... can anyone suggest a faster code than the one I wrote?

Cheers,

Federico Calboli

-- Federico C. F. Calboli Department of Epidemiology and Public Health Imperial College, St. Mary's Campus Norfolk Place, London W2 1PG Tel +44 (0)20 75941602 Fax +44 (0)20 75943193 f.calboli [.a.t] imperial.ac.uk f.calboli [.a.t] gmail.com ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.htmlReceived on Tue Jun 21 06:50:39 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:32:54 EST
*