gpt4 book ai didi

r - 使用 R 中的另一个函数停止函数评估

转载 作者:行者123 更新时间:2023-12-04 22:44:01 27 4
gpt4 key购买 nike

我用嵌套的 return 做了一个测试R 中的函数,但没有成功。我来自 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 ,但在我的真实情况下,结构并不那么简单,这种结构会使我的代码更简单。

最佳答案

伸出我的脖子说...
不。
让一个函数不返回给它的调用者而是返回给它的调用者的调用者将涉及改变它的执行上下文。这就是 return 之类的事情和其他控制流的东西是在源代码中实现的。看:
https://github.com/wch/r-source/blob/trunk/src/main/context.c
现在,我不认为 R 级代码可以访问这样的执行上下文。也许您可以编写一些可以做到这一点的 C 级代码,但尚不清楚。你总是可以写一个 do_return_return do_return 风格的功能在 eval.c并构建 R 的自定义版本......它不值得。
所以答案很可能是“不”。

关于r - 使用 R 中的另一个函数停止函数评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com