用C#调用R语言开发.NET MVC Web服务

R语言是个解释执行的语言,语法风格对于常年写C#的我来说非常怪异。并且R的web包shiny用起来也不是很顺手,所以如果要把R的功能用作生产,我倾向于用高级语言给他做一次封装,这样无论是可扩展性还是性能调优空间都会比较有把握。

用.NET调用R语言的方法有两种,一是采用R.net库,官方地址:R.NET,另外一种是利用控制台执行.R代码。我采用的是第二种方法,为什么倾向于第二种后面会说,先简单介绍一下两种不同的方法。

R.NET

R.net可以在C#代码里开启一个R引擎,然后往R引擎中塞入代码段或者直接执行.R文件,并获取执行结果,他的代码大概长这样子

static void Main(string[] args)
{
    REngine.SetEnvironmentVariables(); // <-- May be omitted; the next line would call it.
    REngine engine = REngine.GetInstance();
    // A somewhat contrived but customary Hello World:
    CharacterVector charVec = engine.CreateCharacterVector(new[] { "Hello, R world!, .NET speaking" });
    engine.SetSymbol("greetings", charVec);
    engine.Evaluate("str(greetings)"); // print out in the console
    string[] a = engine.Evaluate("'Hi there .NET, from the R engine'").AsCharacter().ToArray();
    Console.WriteLine("R answered: '{0}'", a[0]);
    Console.WriteLine("Press any key to exit the program");
    Console.ReadKey();
    engine.Dispose();
}

但显然这种方法有三个弊端:

  • 不适合R代码已经开发好的情况
  • 会花费一些没有太大意义的学习成本去熟悉这个库的规则
  • 无法保证这个R.NET的版本能跟上R的版本更新

.NET启动控制台调用R代码

所以我个人倾向于用控制台去调用.R的代码,通过文件IO进行输入输出。流程图如下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值