gpt4 book ai didi

r - 如何停止/结束/停止 R 中的脚本?

转载 作者:行者123 更新时间:2023-12-03 11:01:53 29 4
gpt4 key购买 nike

我写了一个脚本应该 停止执行 如果提供的数据不正确。然而,虽然 stop产生错误消息,脚本继续。一个最小的例子:

if (TRUE) {stop("End of script?")} #It should stop here
print("Script did NOT end!") # but it doesn't, because this line is printed!

控制台输出:
> if (TRUE) {stop("End of script?")}
Error: End of script?
> print("Script did NOT end!")
[1] "Script did NOT end!"
>

这其实并不奇怪,因为从 ?stop :

stops execution of the current expression and executes an error action.



所以它只结束当前表达式,而不是脚本。我找到了 here您可以将 {} 包裹在整个脚本周围(或将其放入函数中),但这似乎是一种解决方法而不是解决方案。当然,捕捉错误并自己处理它们是一种很好的编程习惯(例如,参见 mra68 评论中的链接),但我仍然想知道是否可以在 R 中停止脚本。

我也试过 returnbreak ,但这仅适用于函数或循环。我搜索了其他可能的关键字,例如“halt”和“end”,但没有运气。我觉得有点愚蠢,因为这似乎是一个非常基本的问题。

那么,是否有一个命令可以使我的脚本停止/停止/以 fatal error 结束?

我在 Windows 8 上运行 R 3.2.3,但在 MAC-OSX 上与 R 3.0.1 有同样的问题。
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=Dutch_Netherlands.1252 LC_CTYPE=Dutch_Netherlands.1252 LC_MONETARY=Dutch_Netherlands.1252
[4] LC_NUMERIC=C LC_TIME=Dutch_Netherlands.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):
[1] tools_3.2.3

在 MAC-OS 上测试,sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] nl_NL.UTF-8/nl_NL.UTF-8/nl_NL.UTF-8/C/nl_NL.UTF-8/nl_NL.UTF-8

最佳答案

也许为时已晚,但我最近遇到了同样的问题,发现对我来说最简单的解决方案是使用:

quit(save="ask")

来自 ?quit你可以看到:

save must be one of "no", "yes", "ask" or "default". In the first case the workspace is not saved, in the second it is saved and in the third the user is prompted and can also decide not to quit. The default is to ask in interactive use but may be overridden by command-line arguments (which must be supplied in non-interactive use).



然后,您可以通过在弹出消息框时单击“取消”来决定不退出 R。

希望有帮助!

关于r - 如何停止/结束/停止 R 中的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787004/

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