fourfoldplot() fails to overflow with values that are not all that large R> fourfoldplot(as.table(matrix(c(100000L, 80000L, 60000L, 120000L),2,2))) Error in if (or == 1) x <- t * n/(m + n) else if (or == Inf) x <- max(0, : missing value where TRUE/FALSE needed In addition: Warning messages: 1: In f[1L, 1L] * f[2L, 2L] : NAs produced by integer overflow 2: In f[1L, 2L] * f[2L, 1L] : NAs produced by integer overflow 3: In f[1L, 1L] * f[2L, 2L] : NAs produced by integer overflow 4: In f[1L, 2L] * f[2L, 1L] : NAs produced by integer overflow 5: In f[1L, 1L] * f[2L, 2L] : NAs produced by integer overflow 6: In f[1L, 2L] * f[2L, 1L] : NAs produced by integer overflow R> fourfoldplot(as.table(matrix(c(1000L, 800L, 600L, 1200L),2,2))) # passes R> fourfoldplot(as.table(matrix(c(10000L, 8000L, 6000L, 12000L) * 1.0,2,2))) R> As you can see, it passes with values one order of magnitude smaller ... or the same values stored as numeric.

Last example is off by a factor of 10, but I get the point. Presumably an as.double() applied to f inside the function odds() could fix this.

Sorry for the imprecise wording: i) call fails as integer ii) call passes with values that 1/10 of original values, still integer iii) call passes with original values _once turned to double_ And agreed, there is probably a cheap conversion inside we should apply.

Nothing wrong with the wording, but you divided by _100_ then multiplied by 10 and converted to double. Anyways, this is now fixed in R-patched and R-devel.