У меня возникли проблемы с вызовами собственных R-функций с использованием R.Net; У меня есть несколько пользовательских функций внутри некоторых сценариев R myScript.R, ..., и я хочу, чтобы вызывать эту функцию с помощью R.netВызов пользовательских функций внутри скрипта в R.Net
это то, что у меня до сих пор
один myScript.R файл содержит несколько функций, как этого
userDefinedFunctionOne <- function(parameter1, parameter2)
{
.
.
.
}
userDefinedFunctionTwo <- function(parameter1, parameter2, ...)
.
.
.
и с R.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();
Я получаю эту ошибку
Error: could not find function "userDefinedFunctionOne"
Я нашел видел некоторые примеры, когда пользовательские функции определяется как это
Function data = engine.Evaluate(@"data <- function(a,b){
c = a %*% b;
return(c);
}").AsFunction();
bu t Я хочу этого избежать, потому что, как я писал, у меня есть несколько функций внутри файлов R-скриптов.
есть ли способ сделать это, не переписывая мои R-функции как строки ???
Я бы apreciate помощи, спасибо
Проблема заключалась в том, что я не вызывал 'REngine.SetEnvironmentVariables();' перед тем, как получить экземпляр Rengine 'this.engine = REngine.GetInstance();' я увидел, что в этом примере добавлена эта строка и она работает сейчас, спасибо – streetwizard