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

在R中尽可能嵌套函数是否更好?,r,function,R,Function,在R中,编写自定义函数来完成给定数据集或分析所需的专门工作是很常见的。例如,这些函数可能会减少重复的代码,或者可以矢量化以提高性能。此外,函数可以调用其他函数 设想一种情况,其中一个函数bar(),将仅在另一个函数foo()中调用。在这种情况下,是在foo()内部还是外部创建bar()更好 下面是一个简单的示例(可能不够详细,无法使不同的策略有意义地不同,但您可以想象或建议;-)-复杂的函数可以嵌套,也可以不嵌套): #在以下范围内: foo我的首选是嵌入函数。这样做的一个主要原因是,我和其他审

在R中,编写自定义函数来完成给定数据集或分析所需的专门工作是很常见的。例如,这些函数可能会减少重复的代码,或者可以矢量化以提高性能。此外,函数可以调用其他函数

设想一种情况,其中一个函数
bar()
,将仅在另一个函数
foo()
中调用。在这种情况下,是在
foo()
内部还是外部创建
bar()
更好

下面是一个简单的示例(可能不够详细,无法使不同的策略有意义地不同,但您可以想象或建议;-)-复杂的函数可以嵌套,也可以不嵌套):

#在以下范围内:

foo我的首选是嵌入函数。这样做的一个主要原因是,我和其他审阅代码的人都清楚该函数的含义:嵌入函数的唯一目的是为外部函数服务。我也有一些模糊的感觉,垃圾收集更干净,尽管没有证据支持这一点。如果您正在编写多个
foo
变体,它们都使用相同的
bar
函数,那么您最好在外部创建
foo
。除此之外,您的全局命名空间/环境可能会因多个函数定义而变得混乱。从开发和测试的角度来看,单独的函数更容易测试和维护。如果你有一个错误,它是非常清楚的地方和原因。从操作上来说,它没有什么区别。这为内部函数的需要提供了一个用例。我的首选是嵌入函数。这样做的一个主要原因是,我和其他审阅代码的人都清楚该函数的含义:嵌入函数的唯一目的是为外部函数服务。我也有一些模糊的感觉,垃圾收集更干净,尽管没有证据支持这一点。如果您正在编写多个
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)
}