Эффективный код с использованием вложенных функций в R - PullRequest
0 голосов
/ 14 ноября 2018

Мне интересно, что более эффективно в R, когда дело доходит до использования вложенных функций.По сути, у меня есть три функции f1, f2, f3.f3 использует f2, который сам использует f1

У меня есть 2 варианта:

  • Определите f1, f2, f3 независимо.Затем используйте f3, который будет использовать f1 и f2, заранее определенные в среде
  • Определите f3, и включите f1 и f2 как часть кода f3, затем используйте f3

.ваши знания, является ли один из этих способов более эффективным, чем другой?

Большое спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Спасибо.Я не знал эту функцию.Я запустил следующее, используя только 2 функции f1 и f2:

f1 <- function(x) {
  y <- x + 2
  return(y)
}

f2 <- function(y){
  x = 3
  z <- y + 3 + f1(x)
  return(z)
}

, которые вернули

> microbenchmark::microbenchmark(f2(2))
Unit: nanoseconds
expr min  lq     mean median    uq     max neval
f2(2) 737 754 47665.41  798.5 910.5 4667754   100

В отличие от

f3 <- function(y){

  f4 <- function(x) {
  y <- x + 2
  return(y)}

  x = 3
  z <- y + 3 + f4(x)
  return(z)
}

Который кажется немного медленнее

> microbenchmark::microbenchmark(f3(2))
Unit: nanoseconds
  expr min    lq     mean median   uq     max neval
 f3(2) 844 868.5 53053.53   1000 1096 5180886   100

Хотя я не уверен, что этот пример очень надежный ... так как он очень быстрый

...