[R] log10(), floor() combo issue?

E.L. Willighagen egonw at sci.kun.nl
Mon Oct 14 10:50:43 CEST 2002

Hi all,

in my search for a nice binary2decimal method, I received this nice
code (thanx to Uwe Ligges):

 bindec <- function(b)
   sum(as.integer(unlist(strsplit(b, ""))) * 2^(floor(log10(b)):0))

It fails, however, with:

> bindec(1000)
[1] 4
Warning message:
longer object length
        is not a multiple of shorter object length in: 
as.integer(unlist(strsplit(b, ""))) * 2^(floor(log10(b)):0)

The reason is the combination of floor() and log10():

log10(1000) = 3 

ok, but:

floor(log10(1000)) = 2

? Ok, I can live with some floating point inaccuracy, but this seems
at least a bit strange, and to me troublesome as it makes the bindec()
method fail...

I've also tried to force the output of log10(1000) into integer format


However, with the same disappointing results...


kind regards,

r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list