implicit return? [R for BE/BA]

posted by Helmut Homepage – Vienna, Austria, 2019-04-28 23:38 (586 d 01:49 ago) – Posting: # 20259
Views: 4,419

Hi ElMaestro,

» My functions almost always look like this:
» » Foo=function(bar)
» {
»   ##blah blah, conditions and functionality and loops and loads of curly braces here.
»   ##whatever happens in loops and conditions it sets a variable called e.g. rslt
»
»   return(rslt) ##I always have a line at the end that looks like this!
» }


Good practice. I use it in longer functions as well and in ones which become part of a package, always. Only very, very slightly slower:
library(microbenchmark)
impl <- function(x) {
  if (x == 0) {
    "foo"
  } else {
    "bar"
  }
}
expl <- function(x) {
  if (x == 0) {
    return("foo")
  } else {
    return("bar")
  }
}
braces.with.suspenders <- function(x) {
  if (x == 0) {
    res <- "foo"
  } else {
    res <- "bar"
  }
  return(res)
}
res <- microbenchmark(impl(round(runif(1), 0)),
                      expl(round(runif(1), 0)),
                      braces.with.suspenders(round(runif(1), 0)),
                      times=3000L)
print(res)

Unit: microseconds
                                      expr   min    lq     mean median    uq    max neval cld
                  impl(round(runif(1), 0)) 1.811 1.812 1.976830  1.813 2.114  5.434  3000  a
                  expl(round(runif(1), 0)) 1.811 1.812 1.976926  1.813 2.114  6.340  3000  a
braces.with.suspenders(round(runif(1), 0)) 1.811 1.812 2.027029  2.114 2.114 16.905  3000   b

Dif-tor heh smusma 🖖
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

Activity
 Admin contact
21,240 posts in 4,431 threads, 1,482 registered users;
online 6 (1 registered, 5 guests [including 3 identified bots]).
Forum time: Saturday 00:27 CET (Europe/Vienna)

I believe there is no philosophical high-road in science,
with epistemological signposts. No, we are in a jungle
and find our way by trial and error,
building our road behind us as we proceed.    Max Born

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5