在Ruby中使用R语言(rinruby)
把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,使用的是rinruby的pull方法。先前定义的R实例化对象x,我们计算x的平均数m,然后让m返回给Ruby。
R.eval "m<-mean(x)" v1 = R.pull "m" puts v1
v1 = R.m
并且pull方法可以采取任意的R表达式。例如:
v1 = R.pull "mean(x)+3"
从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的文本文件中,如以下代码保存在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文档,敬请留意。