Hi

I need to use rep() to get a vector out, but I have spotted something very
strange.  See the reproducible example below.

N <- 79
seg <- 5
segN <- N / seg   # = 15.8

d1 <- seg - ( segN - floor(segN) ) * seg
d1                    # = 1

rep(2, d1)          # = numeric(0), strange - why doesn't it print one "2"?
rep(2, 1)            # 2, ok
rep(2, d1 / 1,1)   # 2, this does work
rep(2, d1 + 2)    # "2 2" - also works but...
d1 + 2              # = 3! so why does it print two 2s above?

d1 == 1             # FALSE
all.equal(d1, 1)   # TRUE
identical(d1, 1)   # FALSE

Try something else...

d2 <- 4 - ( (79/4) - floor(79/4))* 4
d2                     # = 1

rep(2, d2)          # 2 : this works!

d2 == 1             # TRUE
all.equal(d2, 1)   # TRUE
identical(d2, 1)   # TRUE

#version info
platform       x86_64-pc-linux-gnu
arch           x86_64
os             linux-gnu
system         x86_64, linux-gnu
status
major          2
minor          10.1
year           2009
month          12
day            14
svn rev        50720
language       R
version.string R version 2.10.1 (2009-12-14)


Seems like there's some binary maths errors here somewhere.  Very strange to
me.  Anyway, I need to be able to use the result d1 in a rep() command.  Any
way to force rep not to be *too* specific in how it reads its "times"
argument?

Thanks in advance,
Benjamin Hoyer

DTU MSc Mathematical Modelling (2012) / Novozymes student helper

	[[alternative HTML version deleted]]

