C# REngine.CreateNumericVector返回;值不在预期范围内;如果不止一次打电话

C# REngine.CreateNumericVector返回;值不在预期范围内;如果不止一次打电话,c#,r,C#,R,我试图在C#程序中使用RDotNet创建一个图形。我调用一个表单,它根据输入创建C#双精度列表。然后,它尝试将列表以X和Y值的形式相互绘制。它总是在我第一次调用它时工作,但是如果我再次调用它,我对engine.CreateNumericVector的调用会导致错误“值不在预期范围内”。每次调用表单时都会重新创建表单,每次都会创建新列表。即使我使用列表中的相同数据调用它,也会发生这种情况 尝试使用不同大小的列表调用CreateNumericVector,但没有打印,并且没有问题。尝试将列表设置为I

我试图在C#程序中使用RDotNet创建一个图形。我调用一个表单,它根据输入创建C#双精度列表。然后,它尝试将列表以X和Y值的形式相互绘制。它总是在我第一次调用它时工作,但是如果我再次调用它,我对engine.CreateNumericVector的调用会导致错误“值不在预期范围内”。每次调用表单时都会重新创建表单,每次都会创建新列表。即使我使用列表中的相同数据调用它,也会发生这种情况

尝试使用不同大小的列表调用CreateNumericVector,但没有打印,并且没有问题。尝试将列表设置为IEnumerable值,但使用该值无效。我尝试过同样的场景,将符号表达式传递到创建R图的例程中,没有遇到任何问题。已经尝试将列表参数传递到plot函数中,而不是使用全局列表,这无关紧要。问题似乎出在CreateNumericVector上

private void PlotR()
{
    using (engine)
    {
      NumericValue a = engine.CreateNumericValue(aList);
      engine.SetSymbol("AValues", a);

      NumericValue b = engine.CreateNumericValue(bList);
      engine.SetSymbol("BValues", b);

      engine.Evaluate("plot(BValues, AValues, psch = 15, cex=1, 
          col=rgb(0,0,1);
    }
}

打开表单,创建double列表,调用此函数一次,它将绘制值。关闭表单,使用不同的信息再次打开表单,创建不同的列表,始终停止行:NumericValue a=engine.CreateNumericValue(aList)并显示错误“值不在预期范围内。REngine是在程序的早期,即调用任何表单之前成功创建的,因此引擎在所有这些过程中持续运行,没有任何问题。此表单是唯一使用它的表单。

不知道为什么代码显示得如此奇怪。它以private void PlotR()开头,不知道为什么代码显示得如此奇怪。它以私有void PlotR()开头