This is exactly as expected. See section 4.3.3 of the R Language definition or google around on "R Lazy Evaluation" for details.
You should not "expect" R's semantics to be the same as other languages with which you may be familiar. Spending time with a good tutorial or two should help you sort out points of similarity and differences. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Sat, Sep 2, 2017 at 10:22 AM, Matthias Gondan <matthias-gon...@gmx.de> wrote: > Dear R developers, > > sessionInfo() below > > Please have a look at the following two versions of the same function: > > 1. Intended behavior: > > > Su1 = function(u=100, l=u, mu=0.53, sigma2=4.3^2) > + { > + print(c(u, l, mu)) # here, l is set to u’s value > + u = u/sqrt(sigma2) > + l = l/sqrt(sigma2) > + mu = mu/sqrt(sigma2) > + print(c(u, l, mu)) > + } > > > > Su1() > [1] 100.00 100.00 0.53 > [1] 23.2558140 23.2558140 0.1232558 > > In the first version, both u and l are correctly divided by 4.3. > > 2. Strange behavior: > > > Su2 = function(u=100, l=u, mu=0.53, sigma2=4.3^2) > + { > + # print(c(u, l, mu)) > + u = u/sqrt(sigma2) > + l = l/sqrt(sigma2) # here, l is set to u’s value > + mu = mu/sqrt(sigma2) > + print(c(u, l, mu)) > + } > > > > Su2() > [1] 23.2558140 5.4083288 0.1232558 > In the second version, the print function is commented out, so the > variable u is > copied to l (lowercase L) at a later place, and L is divided twice by 4.3. > > Is this behavior intended? It seems strange that the result depends on a > debugging message. > > Best wishes, > > Matthias > > > > sessionInfo() > R version 3.4.1 (2017-06-30) > Platform: x86_64-w64-mingw32/x64 (64-bit) > Running under: Windows >= 8 x64 (build 9200) > > Matrix products: default > > locale: > [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 > LC_MONETARY=German_Germany.1252 > [4] LC_NUMERIC=C LC_TIME=German_Germany.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > loaded via a namespace (and not attached): > [1] compiler_3.4.1 tools_3.4.1 > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.