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.

Reply via email to