[Rd] Different behaviour in Linux and Windows (PR#1293)

ripley@stats.ox.ac.uk ripley@stats.ox.ac.uk
Fri, 1 Feb 2002 17:16:54 +0100 (MET)


1) This is a random input, which might make it non-reproducible.

2) Solaris 2.7 gives 560 too.

You appear to be trying to calculate 34!/2*32! in a *very* inefficient
way, and then not rounding it.  And your answer depends on comb being an
integer.  So use (34*33)/2

In summary: you have used an unstable algorithm, and the bug is using that
algorithm.  For only slightly large inputs it would fail altogether.


On Fri, 1 Feb 2002 amurta@ipimar.pt wrote:

> Hi
>
> I have written a small function to calculate distances between pairs of
> landmarks ('my.dist' bellow). I gave it to a colleague that works with
> MSWindows and the function doesn't give the right answer:
>
> R 1.4.1 for Linux:
>
> > my.dist()
> [1]  22 561
>
> R 1.4.1 for Windows:
>
> > my.dist()
> [1]  22 560
> Warning message:
> Replacement length not a multiple of the elements to replace in
> matrix(...)
>
>
> FYI: S+ 2000 pro. rel.2 for Windows and S+ 6.0 for Linux both give the
> same (wrong) answer as R 1.4.1 for Windows.
>
>
> ----------------------------------------------
>
> xy3 <- matrix(round(100*runif(22*68)),22,68)
>
> my.dist <- function(x = xy3){
>
>  landmarks.x <- as.matrix(x[, 1:34])
>  landmarks.y <- as.matrix(x[, 35:68])
>
>  x1 <- c()
>  x2 <- c()
>  y1 <- c()
>  y2 <- c()
>
>  for(i in 1:(ncol(landmarks.x) - 1)) {
>   x1 <- c(x1, rep(landmarks.x[, i], ncol(landmarks.x) - i))
>   x2 <- c(x2, c(landmarks.x[,  - (1:i)]))
>   y1 <- c(y1, rep(landmarks.y[, i], ncol(landmarks.x) - i))
>   y2 <- c(y2, c(landmarks.y[,  - (1:i)]))
>  }
>
>  distan <- sqrt((x1 - x2)^2 + (y1 - y2)^2)
>  comb <- prod(ncol(landmarks.x):1)/(2 * prod((ncol(landmarks.x) - 2):1))
>
>  dist.out <- matrix(distan, nrow(x), comb)
>  dim(dist.out)
> }
>
>
> --
>                            Alberto G. Murta
>            IPIMAR - Institute of Fisheries and Sea Research
>             Avenida de Brasilia, 1449-006 Lisboa, Portugal
> Tel:+351 213027062; Fax:+351 213015849; http://www.ipimar.pt/pelagicos/
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-devel 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-devel-request@stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel 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-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._