On 14/11/2016 11:26 AM, Wolf, Steven wrote:
Just to add on a bit, please note that the return is superfluous. If
you write this:
normalDensityFunction = function(x, Mean, Variance) {
# no "return" value given at all
(1/sqrt(2*pi*Variance))*exp(-(1/2)*((x - Mean)^2)/Variance)
}
normalDensityFunction(2,0,1)
...you get the right answer again.
This is not "best practices", and Duncan will probably give you 10
reasons why you should never do it this way. But if the parentheses
behavior bothers you enough, you can subvert it. This probably won't
work so well if you try to make any more complicated output.
Why do you say that's not best practice? I would say that's preferable
to an explicit return().
Duncan
Caveat Emptor.
-SW
--
Steven Wolf, PhD
Assistant Professor
Department of Physics
STEM CoRE -- STEM Collaborative for Research in Education
http://www.ecu.edu/cs-acad/aa/StemCore
East Carolina University
Phone: 252-737-5229
On Sun, 2016-11-13 at 13:35 -0500, Duncan Murdoch wrote:
On 13/11/2016 7:58 AM, Duncan Murdoch wrote:
On 13/11/2016 6:47 AM, Duncan Murdoch wrote:
On 13/11/2016 12:50 AM, Dave DeBarr wrote:
I've noticed that if I don't include parentheses around the
intended return value for the "return" statement, R will assume
the first parenthetical expression is the intended return value
... even if that parenthetical expression is only part of a larger
expression. Is this intentional?
Yes, return is just a function call that has side effects. As far
as the parser is concerned, return
((1/sqrt(2*pi*Variance))*exp(-(1/2)*((x - Mean)^2)/Variance)) is
basically the same as f((1/sqrt(2*pi*Variance))*exp(-(1/2)*((x -
Mean)^2)/Variance))
By the way, out of curiosity I took a look at the source of CRAN
packages to see if this actually occurs. It turns out that "return"
is used as a variable name often enough to make automatic tests
tricky, so I don't know the answer to my question. However, I did
turn up a number of cases where people have code like this: if (name
== "") return; (from the bio.infer package), which never calls
return(), so doesn't actually do what the author likely intended
I searched the R sources and the sources of CRAN packages, and found
this is a reasonably common problem: it's in 111 packages, including
one in base R. I'll be emailing the maintainers to let them know.
I'll see about putting a check for this into R CMD check.
Duncan Murdoch
______________________________________________
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.