在R中,当想要在另一个函数中使用一个/多个函数时,可能有两种方法.示例函数可以是:
方法1:
make.power <- function(n) {
pow <- function(x) {
x^n
}
pow
}
Run Code Online (Sandbox Code Playgroud)
方法2:
make.power <- function(n) {
pow(n)
}
pow <- function(x) {
x^n
}
Run Code Online (Sandbox Code Playgroud)
在我看来(但我不确定),第二种方法是一种更好的方法,如果你有很多子功能.
我的问题是: 1)这两种方式之间是否存在功能差异?例如,函数如何传递变量,或者子函数与父函数之间的关系等.
2)对于R,哪一个可能是优选的(可能更有计算效率或结构清晰)?
如果你问的是你给出的具体例子,这个问题对我来说似乎不太宽泛.
这里的主要区别是评估n.对于例如1,被返回的功能将主要有硬编码n值.
> n = 100
> f1 = make.power(2)
> f1(2)
[1] 4
> n = 1
> f1(2)
[1] 4
Run Code Online (Sandbox Code Playgroud)
示例2不会,而是依赖于全局定义n.
> n = 1
> make.power2(2)
[1] 2
> n = 100
> make.power2(2)
[1] 1.267651e+30
Run Code Online (Sandbox Code Playgroud)
随着功能变得越来越复杂,范围问题也将变得越来越复杂.David Robinson在评论中提供的链接是一个很好的资源.
| 归档时间: |
|
| 查看次数: |
10158 次 |
| 最近记录: |