ffconform returns position of 'most' conformable ff argument or zero if the arguments are not conforming

ffconform(..., vmode = NULL, fail = "stop")

Arguments

...

two or more ff objects

vmode

handing over target vmode here supresses searching for a common vmode, see maxffmode

fail

the name of a function to call if not-conforming, default stop

Details

A reference argument is defined to be the first argument with a dim attribute or the longest vector. The other arguements are then compared to the reference to check for conformity, which is violated if vmodes are not conforming or if the reference has not a multiple length of each other or if the dimensions do not match or if we have a dimorder conflict because not all arguments have the same dimorderStandard.

Value

the position of the most conforming argument or 0 (zero) if not conforming.

Author

Jens Oehlschlägel

Note

xx Work in progress for package R.ff

Examples

  a <- ff(1:10)
  b <- clone(a)
  c <- ff(1:20)
  d <- ff(1:21)
  ffconform(a,b)
#> [1] 1
#> attr(,"vmode")
#> [1] "integer"
  ffconform(c,a)
#> [1] 1
#> attr(,"vmode")
#> [1] "integer"
  ffconform(a,c)
#> [1] 2
#> attr(,"vmode")
#> [1] "integer"
  ffconform(c,a,b)
#> [1] 1
#> attr(,"vmode")
#> [1] "integer"

  d1 <- ff(1:20, dim=c(2,10))
  d2 <- ff(1:20, dim=c(10,2))
  ffconform(c,d1)
#> [1] 2
#> attr(,"vmode")
#> [1] "integer"
  ffconform(c,d2)
#> [1] 2
#> attr(,"vmode")
#> [1] "integer"
  ffconform(d1,c)
#> [1] 1
#> attr(,"vmode")
#> [1] "integer"
  ffconform(d2,c)
#> [1] 1
#> attr(,"vmode")
#> [1] "integer"
  try(ffconform(d1,d2))
#> Error in do.call(fail, list("non-conforming arrays")) : 
#>   non-conforming arrays
  ffconform(d1,d1)
#> [1] 1
#> attr(,"vmode")
#> [1] "integer"

  rm(a,b,c,d1,d2); gc()
#>           used (Mb) gc trigger  (Mb) max used  (Mb)
#> Ncells 1144775 61.2    1994352 106.6  1994352 106.6
#> Vcells 2124674 16.3    8388608  64.0  3981144  30.4