通过Ruby on Rails和R语言,在web实现R语言的运行
本文的前提是你已经安装好了ROR和R语言,本文的环境是:windows8.1 64位,R-64位,通过Railsinstaller安装的Ruby1.93和rails3.2,并且已经安装了rinruby。
一、定义ROR的访问路径,在项目文件下的config/routes.rb进行如下的修改
get "rlngs" => "rlngs#index" post "rlngs" => "rlngs#run"
二、建立控制器
class RlngsController < ApplicationController def index end def run require "rinruby"#加载rinruby库 @Rtest=params[:Rtest]#接收名为Rtest的值 @Rtest=@Rtest.gsub("\r\n",";") #这里把接收到的R语句的回车变为;号,如果要处理更复杂的R,这里需要想更多的办法。 R.eval @Rtest#执行R脚本 end end
三、建立视图
在项目文件下的app/views里建立一个与控制器同名的文件夹rlngs。
在rlngs里创建输入R页的视图文件index.html.erb
<form accept-charset="UTF-8" action="/rlngs" method="post"> <p>请输入R语句:</p> <textarea cols=50 rows=10 name="Rtest" id="Rtest"> x <- rnorm(10) summary(x) a <- sd(x)</textarea> <p></p> <input name="commit" type="submit" value="运行R" /> </form>
在rlngs里创建运行后的视图文件run.html.erb
运行的R命令如下:</br> <%=@Rtest %> <p></p>
四、通过浏览器运行
通过在项目文件中dos运行“rails s”后,在浏览器中输入http://127.0.0.1:3000/rlngs
点击运行R按钮后,如下:
优化:你可以在输入框中用标准的R语言引用一个R脚本文件,如下图。
缺点:运行的结果暂时没有想到什么方法来动态来提取显示到web中。
欢迎读者交流指正。
liuwei
2014 年 05 月 22 日 22:16
你好,我在windows安装RinRuby之后,提示错误:错误: 系统找不到指定的注册表项或值。
错误: 系统找不到指定的注册表项或值。
RuntimeError: Cannot locate R executable
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rinruby-2.0.3/lib/rinruby.rb:767:in `find_R_on_windows’
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rinruby-2.0.3/lib/rinruby.rb:151:in `initialize’
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rinruby-2.0.3/lib/rinruby.rb:790:in `new’
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rinruby-2.0.3/lib/rinruby.rb:790:in `’
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require’
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require’
from (irb):4
from C:/RailsInstaller/Ruby1.9.3/bin/irb:12:in `’,请问该如何解决?