How do I stop/end/halt a script in R?
<p>I wrote a script that should <strong>stop execution</strong> if the supplied data is incorrect. However, although <code>stop</code> produces an error message, the script just continues. A minimal example:</p>

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

<p>Console output:</p>

<pre><code>&gt; if (TRUE) {stop("End of script?")}
Error: End of script?
&gt; print("Script did NOT end!")
[1] "Script did NOT end!"
&gt;
</code></pre>

<p>This is actually not surprising, because from <code>?stop</code>: </p>

<blockquote>
  <p>stops execution of the current expression and executes an error action.   </p>
</blockquote>

<p>So it only ends the current expression, not the script. I have found <a href="https://stackoverflow.com/questions/12573660/how-to-prevent-execution-of-further-code-steps-after-error">here</a> that you can wrap {} around the total script (or put it in a function), but that seems rather a workaround than a solution. Off course, it is good programming practice to catch error and handle them off yourself (see for example the link in comment from mra68), but I would still like to know if I can stop a script in R.</p>

<p>I have also tried <code>return</code> and <code>break</code>, but this only works in a function or loop. I searched for other possible keywords like "halt" and "end", but no luck. I am feeling a bit stupid, because it seems a very basic question.</p>

<p><strong>So, is there a command that can make my script halt/stop/end with a fatal error ?</strong></p>

<p>I am running R 3.2.3 on Windows 8, but had the same problem with R 3.0.1 at MAC-OSX.</p>

<pre><code>&gt; sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows &gt;= 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
</code></pre>

<p>TEST ON MAC-OS, sessionInfo()</p>

<pre><code>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
</code></pre>