Rstudio代码使用断点和ctrl-Enter乱序执行?

时间:2019-07-10 20:51:34

标签: r rstudio

要复制该问题,请首先创建一个脚本文件并使用以下命令将其来源:

Mathtest1 <- function (array1, mult)
{
  a1 = array1
  a2 = a1 * mult
  a3 = a2 + a1
  a4 = a3 - a1
  a5 = a4 * mult
  return(a5)
}

然后将此文件作为来源(保存时以任何方式获取)

然后从另一个cript文件或控制台运行以下内容。

c1 = c(1:10)
c2 = c1
c2 = Mathtest1(c1,2)
print(c2)

输出应为:

c2 = Mathtest1(c1,2)
> print(c2)
 [1]  4  8 12 16 20 24 28 32 36 40

现在在Mathtest1函数的任何地方创建一个断点,并调试源(或不调试)。

现在,如果您使用Ctrl-Enter或控制台运行文件中的5行,我会得到:

> c2 = Mathtest1(c1,2)
Called from: eval(expr, p)
Browse[1]> print(c2)
 [1]  1  2  3  4  5  6  7  8  9 10
Browse[1]> n
debug at ~/RStudio/Test1/Test1.R#5: a4 = a3 - a1
Browse[2]> 

我希望在休息后函数竞争后,输出相同的打印结果。

问题在于它在c2 = Mathtest1(c1,2)行完成之前执行了print(c2)行。

如果脚本文件是源文件,那么它确实会在完成之前等待断点完成。因此,问题完全出在控制台或Ctrl-Enter上,这使得调试几乎变得不可能。

R 3.5.3和3.6.1与Rstudio 1.2.1335一起发生,以前没有发生。

我不知道如何在Rgui中创建断点,因此很遗憾,我无法测试Rgui是否显示相同的行为。

有什么办法可以始终强制执行订单吗?

0 个答案:

没有答案