2012-04-24 42 views
18

Tengo que desarrollar una interfaz web que permita al usuario ingresar algunas entradas que se pasarán a un Rscript como parámetros y devolver el resultado al usuario.Una interfaz web a un programa R

Tengo algunas preguntas para alguien que lo han hecho de una interfaz web similares:

  1. Qué marco Web para utilizar
  2. ¿Cuál es la forma más fácil de comunicar la interfaz web y las Rscripts (dentro de la aplicación web arquitectura)
  3. ¿Debo instalar R en el servidor (en caso afirmativo cómo lauch los Rscripts desde la interfaz web)
+1

http://opencpu.org/ o si necesita una interoperabilidad a otra web también: http://www.rforge.net/Rserve/ – Hansi

+2

Muy relacionado: http://stats.stackexchange.com/questions/ 9699/using-r-online-without-install-it/9709 # 9709 (RApache es probablemente lo que está buscando) – nico

+0

o también vea: http: // stackoverflow.com/questions/1397097/r-web-application-introduction –

Respuesta

13

R tiene su propio servidor web, por lo que podría hacer todo esto dentro de R. Entonces no hay necesidad de preocuparse por la elección de un marco, o conseguir ellos hablar el uno al otro y así sucesivamente - sólo tiene que utilizar un marco R:

http://cran.r-project.org/web/packages/Rook/index.html

Si no lo hace así por el rendimiento u otras razones, casi cualquier marco hablará con R de una forma u otra , usa lo que conoces Usaría Django y llamaría R a través de Rpy2 o ejecutaría un proceso Rserve, pero si puede programar en PHP o Java, entonces use un marco basado en esos idiomas. Si no puede programar nada más que R, aprenda Python o use Rook.

5

Una forma muy conveniente es combinar Rstudio Server y Rook (consulte las otras respuestas para ver los enlaces).

El servidor Rstudio proporciona una forma muy sencilla de configurar un servidor R al que puede acceder cualquier persona dentro de la red. Normalmente lo usará para editar y ejecutar su script en ese servidor.

Rook le permite crear fácilmente una interfaz web mediante la mezcla de código html para texto e interacción (como campos de entrada, etc.) y código R. Una vez que funcione su script, simplemente ejecútelo desde el Servidor Rstudio, y cualquier usuario (con acceso) podrá conectarse a él, en la misma IP que el Servidor Rstudio.

Estoy usando esta configuración junto con googleVis y estoy muy satisfecho.

3

OpenCPU está actualmente, en mi opinión , el paquete gratuito más avanzado para crear servicios web sin estado (REST) ​​en R. Shiny es un gran marco, pero si planea usar la versión gratuita de la comunidad, tenga en cuenta que no maneja llamadas simultáneas.

+0

Tal vez me falte imaginación, pero no tengo idea de cómo OpenCPU me ayudaría (fácilmente) a desarrollar aplicaciones web en R. ¿Es un framework web? Si es así, tiene la peor página de descripción que he visto en mi vida. –

+1

OpenCPU expone funciones R como servicios REST. Se basa en el entorno RApache, por lo que admite conexiones concurrentes por diseño, no hay problema con que varios usuarios accedan a su servicio web al mismo tiempo. También es compatible con SL (Shiny hace ambas cosas solo en versión paga). Primero, debe crear un paquete R regular (por ejemplo, utilizando RStudio) que contenga su aplicación: código R, páginas HTML, CSS, scripts JS (jQuery, Bootstrap, etc.) y otros recursos. Las páginas HTML son estáticas (sin preprocesamiento como en ASP.NET) pero con la biblioteca OpenCPU Ajax basada en JS puede modificarlas fácilmente. – Bastian

+0

Después de que el paquete con su aplicación esté listo, lo instala de la manera habitual, y eso es todo. OpenCPU no contiene ningún "widgets" o "cosas extravagantes"; es solo una forma de exponer sus aplicaciones en la web. Es una solución estable, rápida y confiable. Lo estoy usando comercialmente desde hace mucho tiempo y nunca me ha decepcionado. El único inconveniente es que no se pueden usar paquetes basados ​​en Java (como xlsx) debido a un error de Java muy específico. También tenga en cuenta que tendrá que empezar a pensar "RESTfuly" (llamadas sin estado), que es el estándar de hoy en día, pero no trivial (puede tener un comienzo difícil). – Bastian

Cuestiones relacionadas