2017-08-16 40 views
0

退出我有这样如何从脚本中的R

Squ <- function(x, expected.result){ 
result <- x*x 
    if(result != expected.result){ 
    stop("We have some error /n/n") 
    return(NULL) 
    } 
    return(result) 
} 

功能我正在下面三行。

Squ(2, 4) 
Squ(3, 7) 
Squ(4, 16) 

理想我预期这个脚本将在第二行,即SQU停止(3,7)仿佛条件是在函数真,但它并没有停止&完全运行该脚本。如果条件符合条件,如何编写脚本以停止。

感谢, 玛尼

+0

你如何执行它?它应该停止,如果你在rStudio中输入它,例如 – drmariod

+2

你想让你的函数崩溃解释器吗? –

+0

您的功能适用于我。 – count

回答

0

通常情况下,运行v代码交互意味着你将保持运行的代码,新的生产线,即使有错误。如果您希望代码在出现任何错误时立即停止,您应该将呼叫包装到Squ中。如果要保存每个测试的值,则必须编辑该函数,但看起来您已经知道每个值应该是什么,并且您试图找到第一个错误。使用函数会给你第一个错误信息,然后停止执行。

test_Squ <- function() { 
    Squ(2, 4) 
    Squ(3, 7) 
    Squ(4, 16) 
    print("All code ran without throwing an error") 
} 

test_Squ() 
# Error in Squ(3, 7) : We have some error /n/n 

让我知道如果你有一个更具体的用例记住,我会编辑我的答案。

+0

谢谢,我从你的答案中得到了一个想法。 –

+0

同样的情况下,我在上面的脚本中有十行而不是三行的脚本。有时我会运行全部十条线或特定的选定线。所以那个时候我不能为这个权利创建功能?如果我运行特定的三个或一些n行脚本将不会停止权利?如何解决这种情况下的问题。 –

+0

你可以在一个函数中放入你想要的许多行。每次你想运行它时重新定义一个函数都没有错。 –