C#调用R语言脚本及函数
环境准备
1.在NuGet里找R.net(1.7.0)下载。(我下载安装不成功,报错为:不能安装依赖项DynamicInterop0.8.1,把项目框架改成.Net Framework 4.6.1就好使了)。
2.安装R软件。(注意不要安装最新的3.5.1版本,我之前安装3.5.1版本
REngine engine = REngine.GetInstance(); 一直报错:没有实例化。那是因为现在R.net最新版本不支持最新的R3.5.1)。
C#调用R语言脚本
在F盘的根目录下写了一个测试的R语言脚本,脚本名称为test_mydata.R
test_mydata <- function()
{
write.csv( “function is ok!”, file = “F:/mydata.csv” )
}
match_string()
执行该脚本,可在F根目录下生成mydata.csv文件。
REngine.SetEnvironmentVariables();
REngine engine = REngine.GetInstance();
engine.Evaluate("source('F:/test_mydata.R')");
Console.ReadKey();
engine.Dispose();
C#调用R语言脚本中的某一函数并获得返回值
在F盘的根目录下写了一个测试的R语言脚本,脚本名称为test_return.R
test_return <- function(x)
{
if(x == ‘woozoom’) {
match_flag = 1
} else {
match_flag = 0
}
return(match_flag)
}
当参数为“woozoom” 函数返回1,其他返回0.
REngine.SetEnvironmentVariables();
REngine engine = REngine.GetInstance();
engine.Evaluate("w <- 'woozoom'").AsCharacter(); //给w赋值
engine.Evaluate("source('F:/test_return.R')");
var returnNum = engine.Evaluate("test_return(w)").AsNumeric();
Console.WriteLine("returnNum: [{0}]", string.Join(", ", returnNum));
Console.ReadKey();
engine.Dispose();