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 <wdun...@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-boun...@r-project.org [mailto:r-help-boun...@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]] ______________________________________________ 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.