首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么R解释器在出错后继续执行代码?

为什么R解释器在出错后继续执行代码?
EN

Stack Overflow用户
提问于 2015-07-17 07:20:56
回答 1查看 95关注 0票数 0

当我向RStudio (或Tinn-R或任何其他环境)中的解释器发送一段R代码时,如果第1行、第2、3、4行出现错误...仍然可以执行。为什么这是默认行为?这似乎与大多数编程语言的工作方式背道而驰,而且很危险,因为如果第1行产生错误,可能会改变后续代码行的功能。这在具有大量打印输出的长脚本中尤其糟糕,因为您可能会在常规输出中遗漏错误消息。有没有一个原因,无论是逻辑上还是历史上的,为什么R是这样工作的?有没有可能改变这一行为,并确保解释器在遇到错误时停止?

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 07:37:30

考虑一些带有错误的R代码:

代码语言:javascript
复制
print("starting")
b+sdlkfjsflkj
print("hello world")

如果我选择这段代码并将其复制到解释器中,正如您所描述的,它将在错误之后继续:

代码语言:javascript
复制
> print("starting")
[1] "starting"
> b+sdlkfjsflkj
Error: object 'b' not found
> print("hello world")
[1] "hello world"

导致它在出现错误时停止的简单解决方案是将其存储在脚本中并使用source运行它

代码语言:javascript
复制
source("play.R")
[1] "starting"
Error in eval(expr, envir, enclos) : object 'b' not found

如果您想保持交互工作,另一种选择是将代码放在块中。如果我以交互方式将以下代码复制到R中...

代码语言:javascript
复制
{
print("starting")
b+sdlkfjsflkj
print("hello world")
}

..。然后,我得到以下输出:

代码语言:javascript
复制
[1] "starting"
Error: object 'b' not found
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31466138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档