[Rd] eapply weirdness/bug

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sun Feb 20 02:10:48 CET 2005


Luke Tierney <luke at stat.uiowa.edu> writes:

> For this specific case though, I _think_ the semantics we want is this:
> 
>      eapply1 <- function(env, FUN, ..., all.names = FALSE) {
>  	FUN <- match.fun(FUN)
>  	lapply(.Internal(env2list(env, all.names)), FUN, ...)
>      }
> 
> Not passing the ... in the current implementation is, I think, an
> oversight, as is the extra evaluation that occurs.  Given that lapply
> is already internal I'm not sure there really is very much benefit in
> having the internal eapply.  If not I'd prefer to replace it by
> something like this; if there are reasons for keeping the .Internal we
> can work on replicating these semantics as closely as possible.  I
> think Robert is the one who would know the issues.

I agree on the semantics (I didn't quite think of the consequences of
FUN doing an eval.parent and things like that before). But if
implemented literally, wouldn't that env2list cause some undesirable
copying? I have the impression that people interested in eapply use
their environments to hold some pretty large objects. So maybe we
should stick with the get()-based version

      eapply2 <- function(env, FUN, ..., all.names = FALSE) {
       FUN <- match.fun(FUN)
       nm <- ls(envir=env,all.names=all.names)
       FUN2 <- function(name,...)FUN(get(name),...)
       lapply(nm, FUN2, ...)
      }



-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907



More information about the R-devel mailing list