From hadley at rice.edu  Sat Jul  3 18:17:29 2010
From: hadley at rice.edu (Hadley Wickham)
Date: Sat, 3 Jul 2010 11:17:29 -0500
Subject: [Rd] Attributes of 1st argument in ...
In-Reply-To: <AANLkTinkSMoLfFm5MGQwA5AGSkVvEEZJhw0GbhKYZ4lB@mail.gmail.com>
References: <AANLkTinkSMoLfFm5MGQwA5AGSkVvEEZJhw0GbhKYZ4lB@mail.gmail.com>
Message-ID: <AANLkTimfOOA7u9pR3pDL-B0vMcunguwC0taMH7bHxlvT@mail.gmail.com>

Hi Dan,

Is there a reason you can't change the function to

f <- function(x, ...) {}

?

Hadley

On Fri, Jul 2, 2010 at 4:26 PM, Daniel Murphy <chiefmurphy at gmail.com> wrote:
> R-Devel:
>
> I am trying to get an attribute of the first argument in a call to a
> function whose formal arguments consist of dots only and do something, e.g.,
> call 'cbind', based on the attribute
> f<- function(...) {get first attribute; maybe or maybe not call 'cbind'}
>
> I thought of (ignoring "deparse.level" for the moment)
>
> f<-function(...) {x <- attr(list(...)[[1L]], "foo"); if (x=="bar")
> cbind(...) else x}
>
> but I feared my solution might do some extra copying, with a performance
> penalty if the dotted objects in the actual call to "f' are very large.
>
> I thought the following alternative might avoid a potential performance hit
> by evaluating the attribute in the parent.frame (and therefore avoid extra
> copying?):
>
> f<-function(...)
> {
> ? L<-match.call(expand.dots=FALSE)[[2L]]
> ? x <- eval(substitute(attr(x,"foo"), list(x=L[[1L]])))
> ? if (x=="bar") cbind(...) else x
> }
>
> system.time tests showed this second form to be only marginally faster.
>
> Is my fear about extra copying unwarranted? If not, is there a better way to
> get the "foo" attribute of the first argument other than my two
> alternatives?
>
> Thanks,
> Dan Murphy
>
> ? ? ? ?[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/



[Rd] Attributes of 1st argument in ...
Hadley Wickham