【发布时间】:2015-08-27 16:59:09
【问题描述】:
在R中,当想在另一个函数中使用一个/多个函数时,可能有两种方法。一个示例函数可以是:
方法一:
make.power <- function(n) {
pow <- function(x) {
x^n
}
pow
}
方法二:
make.power <- function(n) {
pow(n)
}
pow <- function(x) {
x^n
}
在我看来(但我不确定),如果您有很多父函数的子函数,则第二种方法是更好的方法。
我的问题是: 1)这两种方式有什么功能上的区别吗?例如,函数将如何传递变量,或者子函数与父函数之间的关系等。
2) 哪一个可能是 R 的首选(计算效率更高或结构清晰)?
【问题讨论】:
-
您应该通读this chapter,了解函数在其他函数中定义时的行为方式的详细信息。除此之外,问题 1 有点宽泛(存在差异——在什么情况下?),问题 2 部分基于意见。
-
我同意@DavidRobinson 关于这个问题的广度。我认为您的方法的主要区别是显而易见的:在方法 1 中
pow仅在make.power内部,而在方法 2 中是外部的,因此可用于其他功能。哪个更可取取决于上下文:您是否在make.power之外使用pow?这是在一个包中,您的选择还可能涉及是否导出pow? -
真的不明白为什么这太宽泛了......这个概念本身很宽泛,但他给出的例子有一个明确的例子,非常说明R的惰性评估。
-
当我在function里面写函数的时候,我对两种不同的结构方式感到困惑,所以我举了一个具体的例子来理解它。 Senor O 的回答有助于明确区别。我还发现 DavidRobinson 和 Gregor 提供了非常有用的提示,有助于更深入地理解它。