在 R.Net 的脚本中调用用户定义的函数
Calling user defined functions inside a script in R.Net
我在使用 R.Net 调用我自己的 R 函数时遇到问题;我在一些 R 脚本中有几个用户定义的函数 myScript.R, ..., 我想使用 R.net
调用这个函数
这就是我目前得到的
一个 myScript.R 文件包含几个这样的函数
userDefinedFunctionOne <- function(parameter1, parameter2)
{
.
.
.
}
userDefinedFunctionTwo <- function(parameter1, parameter2, ...)
.
.
.
和 R.Net,在我的 class 的构造函数中,我创建了一个 REngine class
的实例
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();
我遇到了这个错误
Error: could not find function "userDefinedFunctionOne"
我发现看到了一些这样定义用户函数的例子
Function data = engine.Evaluate(@"data <- function(a,b){
c = a %*% b;
return(c);
}").AsFunction();
但我想避免这种情况,因为正如我所写,我的 R 脚本文件中有几个函数
有没有办法在不将我的 R 函数重写为字符串的情况下做到这一点???
如果有任何帮助,我将不胜感激,
谢谢
你描述的很好,应该可以工作(顺便说一下,很好 post,谢谢)。我不明白为什么找不到 userDefinedFunctionOne
,因为它应该已经加载到全局 R 环境中。
我在我使用的示例应用程序之一中添加了一些代码:
SourceRCode
从您的 post 运行 派生的代码很好,我可以在调试模式下看到来自 visual studio 的预期数据帧。如果您对此示例应用程序有任何问题,您可以尝试一下并报告吗?
示例应用程序使用最新的 NuGet 包(撰写时为 1.6.5),但是
鉴于这些方法,您似乎正在使用 R.NET 的最新版本,我不认为版本是问题的原因。
我在使用 R.Net 调用我自己的 R 函数时遇到问题;我在一些 R 脚本中有几个用户定义的函数 myScript.R, ..., 我想使用 R.net
调用这个函数这就是我目前得到的
一个 myScript.R 文件包含几个这样的函数
userDefinedFunctionOne <- function(parameter1, parameter2)
{
.
.
.
}
userDefinedFunctionTwo <- function(parameter1, parameter2, ...)
.
.
.
和 R.Net,在我的 class 的构造函数中,我创建了一个 REngine class
的实例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();
我遇到了这个错误
Error: could not find function "userDefinedFunctionOne"
我发现看到了一些这样定义用户函数的例子
Function data = engine.Evaluate(@"data <- function(a,b){
c = a %*% b;
return(c);
}").AsFunction();
但我想避免这种情况,因为正如我所写,我的 R 脚本文件中有几个函数
有没有办法在不将我的 R 函数重写为字符串的情况下做到这一点???
如果有任何帮助,我将不胜感激, 谢谢
你描述的很好,应该可以工作(顺便说一下,很好 post,谢谢)。我不明白为什么找不到 userDefinedFunctionOne
,因为它应该已经加载到全局 R 环境中。
我在我使用的示例应用程序之一中添加了一些代码: SourceRCode
从您的 post 运行 派生的代码很好,我可以在调试模式下看到来自 visual studio 的预期数据帧。如果您对此示例应用程序有任何问题,您可以尝试一下并报告吗?
示例应用程序使用最新的 NuGet 包(撰写时为 1.6.5),但是 鉴于这些方法,您似乎正在使用 R.NET 的最新版本,我不认为版本是问题的原因。