问题
I have an existing Javascript/HTML Application. I wanted to use power of R Programming
's scientific computing and graphics.
My aim is to,
- Send some data from Javascript app.
- Call predefined R functions with the data input.
- Get the output get the output in the form of both text and graphics.
- Display it in the HTML page.
How to achieve this,
Should I run R continuously, use something like
web sockets
and connect to R? If doing How to pass R scripts to execute and get the output pack?There is Rserve. There are some
nodeJS
implementation forRserve
. But problem with this is, each line of code should be passed through theevaluate
commands. Even though if I do so, how to handle the graph output?I explored a bit of openCPU. If using openCPU R package, R should be continuously Running with
opencpu
library and each we start R and openCPU, it starts with different port number. And if i close the R session,opencpu
server also terminates.If I install standalone
opencpu
server in my machine, how to use R with this? I've installed openCPU standalone server and a kind of stuck after that.
How should I proceed, What should I do to accomplish my task. I'm like a kind of don't know which direction to go. Please throw some light on this. I'm sure most people would need this.
I have worked with shiny
, but in this case, I can not make use of it. Need to connect R from external Web Application.
回答1:
FastRWeb sounds like it would be perfect for your needs. From the documentation:
FastRWeb is an infrastructure that allows any webserver to use R scripts for generating content on the fly, such as web pages or graphics. URLs are mapped to scripts and can have optional arguments that are passed to the R function run from the script. For example http://my.server/cgi-bin/R/foo.png?n=100 would cause FastRWeb to look up a script foo.png.R, source it and call run(n="100"). So for example the script could be as simple as
run <- function(n=10, ...) { p <- WebPlot(800, 600) n <- as.integer(n) plot(rnorm(n), rnorm(n), col=2, pch=19) p }
This can potentially then be called using JavaScript to dynamically load images and display them.
You might also like to think about shiny, though that's more of a complete solution.
回答2:
You can call R from javascript efficiently using Rserve
package. There is javascript implementation of Rserve client available rserve-js.
Additionally you may find it interesting the httupv
implementation of R as a service described in this Suggestions needed for building R server REST API's that I can call from external app?.
来源:https://stackoverflow.com/questions/31190468/integrating-r-and-its-graphics-with-existing-javascript-html-application