在C#中怎么调用R语言中编写函数?

Python011

在C#中怎么调用R语言中编写函数?,第1张

R软件不只是一种统计工具,它还是一种语言,就语法形式而言跟S语言非常相识。所以类似与数据库一样,在客户端不是就只能调用一些函数,而是可以用数据库提供的SQL语言编写出拥有灵活多变,满足各种需求的功能。R语言也一样,可以在客户端,用S语言编写程序,传送到R软件,R软件计算完成后将结果在传回C#。

既然需要来回传送,必然需要中间的桥梁,就像数据库需要驱动程序一样,在C#中调用R软件,需要安装R(D)COM,R(D)COM是一种DCOM组件,可以注册到Windows的组件服务中,供程序调用。如果用C#开发Web程序,由于ASP.NET是用ASPNET这个用户在执行,而这个用户的权限很低,所以如果要调用R(D)COM的服务的化,需要给ASPNET授予权限。

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

R语言的使用,很大程度上是借助各种各样的R包的辅助,从某种程度上讲,R包就是针对于R的插件,不同的插件满足不同的需求,截至2013年3月6日,CRAN已经收录了各类包4338个。例如用于经济计量、财经分析、人文科学研究以及人工智能。

做A语言代码修改为B语言的代码是无用功的。

也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。

只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出,即可很方便地让A、B两种语言之间协调工作。

比如:

A将请求数据写到文件a.txt,写完后改名为aa.txt

B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt

A发现bb.txt存在时,读取其内容,读完后删除bb.txt

以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。

除非A或B不支持判断文件是否存在、文件读写和文件更名。

R和C这些语言不一样,同一个函数,不同的输入可能会有不同的返回值类型。对于一次特定的调用,可以用class()、typeof()函数看类型,其中class()给的是更“高级”一点的类型概念,typeof()用得比较少,给的是“低级”一点的类型概念。