C#调用R语言脚本及函数

C#调用R语言脚本及函数

    • 环境准备
    • C#调用R语言脚本
    • 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();

你可能感兴趣的:(C#调用R语言及函数)