在Ruby中使用R语言(rinruby)

作者: 梁斌炜 分类: 统计编程开发            发布时间: 01月15日 16:34
一、通过rinruby集成Ruby和R语言

把R语言集成到传统的编程语言让R语言变得更强大。R语言内置强大的统计工具,但有时候也会让你很郁闷。值得庆幸的是,Ruby可以做很多事情,效率也非常高,而整合R和Ruby是一个相当简单的过程。前提是你安装好了Ruby,如果不知道如何安装,放狗搜索。然后安装gem install rinruby。RinRuby是一个Ruby库,把R解释器集成在Ruby中,让R的统计程序、图形功能可以在ruby中使用。它安装简单,不需要任何特殊的编译或安装。由于它是100%纯Ruby库,它适用于多种操作系统,RinRuby的方法很简单,可读性很强。

>>gem install rinbuby

正确安装后,在Ruby中就可以这样使用rinruby了

>>require "rinruby"

只要引入了rinruby,就不需要进行rinruby的其它配置了,并且系统为自动生成一个rinruby的实例,名字叫R,就可以通过rinruby使用R语言了。简单的例子:

require "rinruby"
R.eval "x<-rnorm(5)"
R.eval "summary(x)"

结果如下:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-0.1573  0.2125  0.4733  0.5620  1.0750  1.2070

很简单就可以在ruby中使用R语言了。

二、从R中获取数据返回给Ruby

数据从R传递到Ruby,使用的是rinruby的pull方法。先前定义的R实例化对象x,我们计算x的平均数m,然后让m返回给Ruby。

R.eval "m<-mean(x)"
v1 = R.pull "m"
puts v1
RinRuby也支持一种简单的方法,使用之前定义好的R变量(其名称符合Ruby的要求)。例如:
v1 = R.m

并且pull方法可以采取任意的R表达式。例如:

v1 = R.pull "mean(x)+3"
三、从Ruby向R传递数据

从Ruby传递数据到R,可以使用assign方法。例如:

score = [87,89,67,99,78,88,83]
R.assign "s",score
R.eval "mean(s)"

结果显示[1] 84.42857

也可以使用一种简单的写法,如下:

R.s = score
四、通过引用R脚本运行R

如果你的R代码很大,那最好的方法是写在一个.R的文本文件中,如以下代码保存在C:\R\test.R

 

x <- c(22,44,55,33,45,66,76,56,45,34)
y <- mean(x)

然后我们在Ruby中如下引用

 

 

R.eval "source('C:/R/test.R')"
puts R.y

 

如果你在尝试加载R包时出现R库路径不正确之类的提示,类似下面的错误提示:

 

Error in library(x) : there is no package called 'x'

可以执行R的.library()函数,设置库的路径:

 

 

R.eval ".libPaths('C:/Users/XX/Documents/R/win-library/3.0')"

 

简单的在Ruby中使用R语言的介绍就到这里,稍后再整理一份详细的rinruby文档,敬请留意。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

技术交流、最新案例学习

请关注我的微信公众号