在R中尽可能嵌套函数是否更好?

时间:2017-01-25 18:03:45

标签: r function

在R中通常编写自定义函数来执行给定数据集或分析所需的专门工作。例如,这些函数可能会导致重复性较低的代码,或者可以进行矢量化以提高性能。而且,函数可以调用其他函数。

想象一种情况,其中一个函数bar()只会在另一个函数foo()中调用。在这种情况下,最好在 bar() 之内创建foo() 吗?

这是一个简单的例子(可能不够精细,不足以使不同的策略有意义地区分,但你可以想象 - 或建议; - ) - 可以嵌套的复杂函数) :

# within:
foo <- function(x){
  bar <- function(x){
    x <- x*2
    return(x)
  }

  x <- x+3
  x <- bar(x)
  return(x)
}

# outside:
bar <- function(x){
  x <- x*2
  return(x)
}
foo <- function(x){
  x <- x+3
  x <- bar(x)
  return(x)
}

我想知道哪个更好,为什么? (如果“优先”对某人看起来有点模糊,这里有一些特定的标准,可能会让你更喜欢其中一个选项。我也倾向于认为一个是某些标准更可取的,而另一个更适合其他标准。)

  1. 一种方式会导致代码更清晰,更易读吗? (这可能适用于处理比示例更多,更大,更复杂的函数,或者在同事之间共享代码时更为重要。)
  2. 程序员是否更不可能以某种方式犯错,或者更容易调试?
  3. 是一个更快,更容易矢量化?例如,每次运行bar()时都会重新创建foo()吗?
  4. 还有一个数字稳定,还是不太可能崩溃?
  5. (其他原因?)

0 个答案:

没有答案