[R] frequency of numbers in a list

Phil Spector spector at stat.berkeley.edu
Sat Aug 8 10:41:33 CEST 2009


Julius -
    Both mag and i are vectors, but of different lengths.
R interprets the statement mag>=i as "return a vector the
same length as mag and i whose elements compare the 
corresponding elements of the two vectors."  The error 
message is due to the fact that mag and i are of different
lengths. R  will repeat the shorter vector until it matches
the length of the longer vector, and reports a warning if it
can't use all the elements resulting from repeating them.
Basically the way you're calculating freq is as

sum(mag >= c(i,i[1:8])

Since the length of i is 32 and the length of mag is 40,
when it tries to repeat i, its' length becomes 40 so there
are some elements left over and the message is printed.

What you want is a vector the length of i, which compares each 
element of i to *all* the elements of mag and then takes the sum.
In R, that would be done with

> sapply(i,function(x)sum(mag >= x))
  [1] 40 39 39 39 39 38 37 35 34 32 30 29 28 28 24 20 18 15 14 13 11  8  5  5  4
[26]  3  2  2  2  2  1  1

Alternatively you could let R vectorize your function:

> vfun = Vectorize(function(x)sum(mag >= x))
> vfun(i)
  [1] 40 39 39 39 39 38 37 35 34 32 30 29 28 28 24 20 18 15 14 13 11  8  5  5  4
[26]  3  2  2  2  2  1  1

Hope this helps.
                                        - Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu





On Fri, 7 Aug 2009, Julius Tesoro wrote:

> Hi,
>
> I have two vectors, mag and i, and I want to generate a of vector  where each element is the frequency of mag which is greater than i.
>
> i produced the following code. However I get the following error:
>
> mag<-rnorm(40,5,3)
> i<-seq(floor(min(mag)),max(mag), 0.5)
> freq<-sum(mag>=i)
>
> Warning message:
> In mag >= i :
>  longer object length is not a multiple of shorter object length
>
> What's wrong with this code?
>
> Thank you very much.
>
> Cheers,
>
> Julius Tesoro
>
> ______________________________________________
> 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.
>




More information about the R-help mailing list