在R

时间:2015-08-27 16:59:09

标签: r function

在R中,当想要在另一个函数中使用一个/多个函数时,可能有两种方法。示例函数可以是:

方法1:

make.power <- function(n) {
 pow <- function(x) {
 x^n
 }
 pow
}

方法2:

make.power <- function(n) {
     pow(n)
    }

pow <- function(x) {
     x^n
     }

在我看来(但我不确定),如果你有很多子功能,第二种方法是更好的方法。

我的问题是: 1)两种方式之间是否存在功能差异?例如,函数将如何传递变量,或者子函数与父函数之间的关系等。

2)对于R?

,哪一个可能是优选的(可能更有计算效率或结构清晰)

1 个答案:

答案 0 :(得分:5)

如果你问的是你给出的具体例子,这个问题对我来说似乎不太宽泛。

这里的主要区别是n的评估。对于示例1 ,返回的函数将基本上具有硬编码的n值。

> n = 100
> f1 = make.power(2)
> f1(2)
[1] 4
> n = 1
> f1(2)
[1] 4

示例2 不会,而是依赖于n的全局定义。

> n = 1
> make.power2(2)
[1] 2
> n = 100
> make.power2(2)
[1] 1.267651e+30

随着功能变得越来越复杂,范围问题也将变得越来越复杂。 David Robinson在评论中提供的链接是一个很好的资源。