调用rnet脚本中的用户定义函数

本文关键字:用户 定义 函数 rnet 脚本 调用 | 更新日期: 2023-09-27 18:09:55

我在使用。net调用我自己的R函数时遇到了麻烦;我有几个用户定义的函数在一些R脚本myScript。R,…,我想用r。net

调用这个函数。

这是我目前得到的

myScript之一。R文件包含如下函数

userDefinedFunctionOne <- function(parameter1, parameter2)
{
.
.
.
}
userDefinedFunctionTwo <- function(parameter1, parameter2, ...)
.
.
.

和使用。net,在我的类的构造函数中,我创建了一个REngine类

的实例
private REngine engine;
public MyClass()
{
     this.engine = REngine.GetInstance();
}

,然后我源myScript。R文件

this.engine.Evaluate(@"source('C:/RScripts/myScript.R')");

但是当我像这样调用函数时

var dataframe = this.engine.Evaluate(string.Format("dataframe <- userDefinedFunctionOne(parameter1 = {0}, parameter2 = {1})",
                                                        value1,
                                                        value2)).AsDataFrame();

我得到这个错误

错误:无法找到函数"userDefinedFunctionOne"

我发现在一些例子中,用户函数是这样定义的

Function data = engine.Evaluate(@"data <- function(a,b){ 
    c = a %*% b;
    return(c);
    }").AsFunction();

,但我想避免它,因为正如我写的,我有几个函数在我的R脚本文件

有没有办法做到这一点,而不重写我的R函数作为字符串??

我将感激任何帮助,由于

调用rnet脚本中的用户定义函数

你描述的很好,应该可以工作(顺便说一句,很好的帖子,谢谢你)。我不明白为什么没有找到userDefinedFunctionOne,因为它应该是在全局R环境中加载的。

我在我使用的一个示例应用程序中添加了一些代码:SourceRCode

从你的帖子派生的代码运行得很好,我可以在调试模式下从visual studio看到预期的数据帧。您可以尝试一下并报告这个示例应用程序是否存在问题吗?

示例应用程序使用最新的NuGet包(撰写本文时为1.6.5),但是

看起来您使用的是rnet给出的方法的最新版本,我不希望版本是问题的原因。