如何查看R脚本中发生错误的行号?

时间:2019-01-21 10:44:57

标签: r

我正在调试模型。通过调用subprocess.check_call()(现在已由pbs.Command()的python)和调用R脚本的python脚本准备输入数据。这个R脚本有很多错误。当R脚本中发生错误时,我们可以在python错误的上方(或下方)看到标准错误中的错误消息。问题是R返回的错误消息仅返回发生错误的代码的一小部分,没有任何行号。 然后,我们必须在原始源代码中搜索该段代码。如果我们有实际的行号,将会更容易。

一个相关的答案suggests using an IDE可以再次逐行遍历整个R代码,但是我们想知道发生此错误的行号,因此我们至少可以运行所有R代码直到该行为止

1 个答案:

答案 0 :(得分:1)

有两种方法可以运行R,无论是在交互模式下还是在非交互模式下。

如果以交互方式启动R,当脚本遇到错误时,您将能够探索当前环境和变量状态。但是您将无法提供文件来运行或从命令行传递参数。每次您都必须手动来痛苦地做这样的事情:

$ R
> argv = c('a', 'b', 'c')
> source('/path/to/script.R')

如果以任何方式提供要从命令行运行的文件,则将以非交互方式启动R。以下所有命令都是这种情况:

$ R /path/to/script.R a b c
$ R < /path/to/script.R
$ R -e "argv = c('a', 'b', 'c'); source('path/to/script.R')"
$ R CMD BATCH /path/to/script.R a b c
$ Rscript --vanilla /path/to/script.R a b c

在非交互模式下,当您遇到错误时,您将不会获得追溯。您甚至都不会获得产生错误的脚本名称或行号。当R处于这种令人遗憾的状态时,很难将R视为真正的编程语言。这更多是业余爱好者的实验。

我从中得出的结论是,R语言不会被用于任何自动化的过程中,并且如果您正在构建管道,则不应使用R语言。因为您将无法调试它。当然,不应将R用于制作可从命令行获取参数的脚本。 R擅长于交互式,探索性数据分析和可视化。