[Rd] sweep sanity checking?

Petr Savicky savicky at cs.cas.cz
Thu Jul 12 10:16:17 CEST 2007


The suggestion sounds reasonable to me. Let me add that sweep is written
to work even if MARGIN includes more than one dimension. To handle these
cases correctly, the test may be replaced e.g. by
     if (check.margin && prod(dims[MARGIN])!=length(STATS)) {
       warning("length(STATS) != prod(dim(x)[MARGIN])")
     } else if (prod(dims[MARGIN]) %% length(STATS)!=0)
       warning("prod(dim(x)[MARGIN]) is not a multiple of length(STATS)")
or even by
     dimstat <- if (is.null(dim(STATS))) length(STATS) else dim(STATS)
     if (check.margin && any(dims[MARGIN]!=dimstat)) {
       warning("length(STATS) or dim(STAT) do not match dim(x)[MARGIN]")
     } else if (prod(dims[MARGIN]) %% length(STATS)!=0)
       warning("prod(dim(x)[MARGIN]) is not a multiple of length(STATS)")

Petr.

> Just an opinion from an R user: I think it's a sound idea.  I use my own 
> version of sweep with a stricter check: it stops if the vector is not 
> exactly the right length.
> 
> -- Tony Plate
> 
> Ben Bolker wrote:
> > Ben Bolker <bolker <at> zoo.ufl.edu> writes:
> >
> >   
> >>   What would R-core think of the following 'enhanced'
> >> sweep?  
> >>     
> >
> >  (now posted at
> > http://wiki.r-project.org/rwiki/doku.php?id=rdoc:base:sweep
> > )
> >
> > It always warns if dim(x)[MARGIN] is
> >



More information about the R-devel mailing list