Dear Bill--
Your final question has my confusion tagged exactly.

Thanks so much for your time and attention!

andrewH


On Sun, Dec 29, 2013 at 5:47 PM, William Dunlap <wdunlap@tibco.com> wrote:

> On Dec 28, 2013, at 7:27 PM, Andrew Hoerner wrote:
>
> > Let us suppose that we have a function foo(X) which is called inside
> > another function, bar(). Suppose, moreover, that the name "X" has been
> > assigned a value when foo is called:
> >
> > X <- 2
> > bar(X=X){
> > foo(X)
> > }
>
> The above is not valid R syntax.  Can you correct it to make a
> self-contained
> runnable example and re-ask the question?
>
> > I have noticed that many functions contain arguments with defaults of the
> > form X=X. Call this reflexive assignment of arguments. How is foo(X=X)
> > different from foo(X)?
>
> I will venture that no useful function contains a default value of X=X.
>
> Are you confounding definitions of functions (where default values are
> specified) like
>     foo <- function(X, Y=log(X)) { Y }
> and calls to functions (where actual values are specified) like
>     foo(X=10, Y=15)
> or
>    Y <- 7
>    foo(Y=Y)
> ?
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
>
> > -----Original Message-----
> > From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-project.org]
> On Behalf
> > Of andrewH
> > Sent: Sunday, December 29, 2013 3:57 PM
> > To: r-help@r-project.org
> > Subject: Re: [R] What purpose is served by reflexive function
> assignments?
> >
> > Dear David--
> >
> > Thanks so much for your helpful reply!
> >
> >  David Winsemius wrote:
> > >>The LHS X becomes a name, the RHS X will be looked up in the calling
> > environment and fails if no value is positionally matched and then no X
> is
> > found (at the time of the function definition.
> >
> > Does X really have to exist when the function is defined? I thought it
> was
> > enough if it existed in the environment of the calling function, or
> > somewhere up the environment chain of the calling function. If this is
> not
> > true, then that means it matters a lot whether you write a function
> inside
> > another function or just call it in that function.  Suppose a function
> with
> > a reflexive assignment X=X is defined in the global environment but
> called
> > inside another function, and X has a different value in those two places.
> > Will it look first in the global environment and only then in the calling
> > environment? And is this different from the behavior without the
> reflexive
> > assignment?
> >
> > I should not bother you with those questions. I should just run it both
> ways
> > and see what happens.calling function and will it look first in the
> >
> > >>If you use`X <- value` in the argument list, then what is returned is
> only
> > the value and the name `X` may be lost. Or in the case of data.frame
> morphed
> > into a strange name:
> >
> > [example omitted]
> > I am not sure that I am understanding you correctly here. Are you saying
> > that assignment using the "=" retains the name (and other attributes?
> which
> > ones?) of the RHS, while "<-" does not?
> >
> >
> >
> >
> > --
> > View this message in context:
> http://r.789695.n4.nabble.com/What-purpose-is-served-
> > by-reflexive-function-assignments-tp4682794p4682819.html
> > Sent from the R help mailing list archive at Nabble.com.
> >
> > ______________________________________________
> > R-help@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>



-- 
J. Andrew Hoerner
Director, Sustainable Economics Program
Redefining Progress
(510) 507-4820

	[[alternative HTML version deleted]]

