[R] problem with function "rep"

Berwin A Turlach berwin at maths.uwa.edu.au
Thu Jun 12 17:11:18 CEST 2008


G'day Julien,

On Thu, 12 Jun 2008 16:48:43 +0200
Julien Hunt <julien.hunt at uclouvain.be> wrote:

> I am currently writing a program where I need to use function rep.
> The results I get are quite confusing. Given two 
> vectors A and B, I want to replicate a[1] b[1] 
> times, a[2] b[2] times and so on.
> All the entries of vector B are positive integers.
> My problem comes from the fact that if I sum up 
> all the elements of B, [...]

Others mentioned already the need for a reproducible example.  But my
guess is that the elements in B are calculated.  Recently, I was sent
the following code by a colleague of mine:

---------------------------------------
Hi Berwin,

Try this in R2.7.0

pai = c(.4,.1,.1,.4)
s = .5

p = diag(1-s, 4) + s * t(matrix(pai, 4, 4))
f = diag(pai) %*% p
z = 200*f

### bug???
z
sum(z)
length(rep(1:16, z))
length(rep(1:16, round(z)))
----------------------------------------

I tested the code and my answer was:

-------------------------------------------
Interesting variation on FAQ 7.31:
http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f

Look at z-round(z) and where the negative residuals are.
--------------------------------------------


My money is on you having the same problem and that using round(B)
instead of B in the rep() command will solve your problem.

HTH.

Cheers,

	Berwin

=========================== Full address =============================
Berwin A Turlach                            Tel.: +65 6516 4416 (secr)
Dept of Statistics and Applied Probability        +65 6516 6650 (self)
Faculty of Science                          FAX : +65 6872 3919       
National University of Singapore     
6 Science Drive 2, Blk S16, Level 7          e-mail: statba at nus.edu.sg
Singapore 117546                    http://www.stat.nus.edu.sg/~statba



More information about the R-help mailing list