【发布时间】:2016-03-03 11:54:52
【问题描述】:
我在 R 中使用嵌套的 return 函数进行了测试,但没有成功。我来自Mathematica,这段代码运行良好。这是一个玩具代码:
fstop <- function(x){
if(x>0) return(return("Positive Number"))
}
f <- function(x){
fstop(x)
"Negative or Zero Number"
}
如果我评估f(1),我会得到:
[1] "Negative or Zero Number"
当我期望的时候:
[1] "Positive Number"
问题是:我可以在fstop 中进行一些非标准的评估,所以我可以只得到fstop 的结果,而不改变f 函数?
PS:我知道我可以将if 直接放在f 中,但在我的实际情况下,结构并不是那么简单,而且这种结构会使我的代码更简单。
【问题讨论】:
-
我不知道你为什么需要这个。我们可能会建议更好的替代方案,但您需要提供有关可接受行为的更多详细信息。也许
stop(返回错误)会满足您的需求? -
@Roland 在实际代码中,而不是返回
print("Positive Number"),我必须返回不同类型的复杂结构。如果我能做到这一点,代码会更优雅。 -
你真的应该向我们展示完整的原始代码,这可能会使我给你的答案不相关。
-
我认为您不能强制返回封闭函数。那是非常奇特的东西。我确信有更好的方法(也许是 Tim 提出的,但你的实际问题仍然定义不明确)。
-
@TimBiegeleisen 指定“R 不是函数式语言”的意思。
标签: r evaluation