2012-04-24 7 views
18

Ich muss eine Webschnittstelle entwickeln, die es dem Benutzer erlaubt, einige Eingaben einzugeben, die an ein Rscript als Parameter übergeben werden und das Ergebnis an den Benutzer zurückgeben.Eine Webschnittstelle zu einem R-Programm

Ich habe einige Fragen für jemanden, der ein ähnliches Web-Interface durchgeführt hat:

  1. Welche Web-Framework
  2. zu Was ist der einfachste Weg, um das Web-Interface und die Rscripts (innerhalb des Web-App zu kommunizieren Architektur)
  3. Soll ich R auf dem Server installieren (falls ja, wie die Rscripts von dem Web-Interface)
+1

http://opencpu.org/ oder wenn Sie interop auch nicht-Web benötigen: http://www.rforge.net/Rserve/ – Hansi

+2

Sehr verwandt: http://stats.stackexchange.com/questions/ 9699/using-r-online-ohne-installation-it/9709 # 9709 (RApache ist wahrscheinlich das, was Sie suchen) – nico

+0

oder auch zu sehen: http: // stackoverflow.com/questions/1397097/r-web-application-einführung –

Antwort

13

R über einen eigenen Webserver hat, so dass Sie die ganze Sache tun könnte innerhalb R. Dann gibt es keine Notwendigkeit mit der Auswahl eines Rahmens zu stören, oder immer sie miteinander zu reden und so weiter - nur einen R-Framework verwenden:

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

Wenn Sie nicht wie die für die Leistung oder aus anderen Gründen, so ziemlich jedem Rahmen wird zu R eine oder andere Weise sprechen , also benutze das, was dir vertraut ist. Ich würde Django verwenden und entweder R über Rpy2 aufrufen oder einen Rserve-Prozess ausführen. Wenn Sie jedoch in PHP oder Java programmieren können, verwenden Sie ein Framework, das auf diesen Sprachen basiert. Wenn du nur in R programmieren kannst, dann lerne Python oder verwende Rook.

7

Rstudio bietet ein Webinterface für R lauchsehen

+0

cool! wusste nicht, RStudio könnte das tun! – nico

5

Eine sehr praktische Möglichkeit ist, Rstudio Server und Rook zu kombinieren (siehe die anderen Antworten für die Links).

Rstudio Server bietet eine sehr einfache Möglichkeit zum Einrichten eines R-Servers, auf den alle Benutzer im Netzwerk zugreifen können. Sie verwenden es normalerweise, um Ihr Skript auf diesem Server zu bearbeiten und auszuführen.

Rook ermöglicht es Ihnen, einfach eine Webschnittstelle zu erstellen, indem Sie HTML-Code für Text und Interaktion (wie Eingabefelder usw.) und R-Code mischen. Sobald Ihr Skript funktioniert, starten Sie es einfach von Rstudio Server aus, und jeder Benutzer (mit Zugriff) kann sich mit derselben IP-Adresse wie Rstudio Server verbinden.

Ich benutze dieses Setup zusammen mit googleVis und bin sehr zufrieden.

3

OpenCPU derzeit, meiner Meinung nach , das am weitesten fortgeschrittene kostenlose Paket zum Erstellen zustandsloser (REST) ​​Webdienste in R. Shiny ist ein großartiges Framework, aber wenn Sie vorhaben, die kostenlose Community-Version zu verwenden, beachten Sie, dass es keine gleichzeitigen Aufrufe behandelt.

+0

Vielleicht fehlt mir die Fantasie, aber ich habe keine Ahnung, wie OpenCPU mir helfen würde, (einfach) Webanwendungen in R zu entwickeln. Ist es ein Web-Framework? Wenn ja, hat es die schlechteste Beschreibung Seite, die ich je gesehen habe. –

+1

OpenCPU zeigt R-Funktionen als REST-Dienste an. Es basiert auf der RApache-Umgebung und unterstützt daher gleichzeitige Verbindungen - kein Problem, wenn mehrere Benutzer gleichzeitig auf Ihren Webservice zugreifen. Unterstützt auch SL (Shiny tut beide nur in kostenpflichtiger Version). Zuerst müssen Sie ein reguläres R-Paket (z. B. mit RStudio) erstellen, das Ihre Anwendung enthält: R-Code, HTML-Seiten, CSS, JS-Skripte (jQuery, Bootstrap usw.) und andere Ressourcen. HTML-Seiten sind statisch (keine Vorverarbeitung wie in ASP.NET), aber mit der OpenCPU Ajax-basierten JS-Bibliothek können Sie sie leicht ändern. – Bastian

+0

Nachdem das Paket mit Ihrer Anwendung fertig ist, installieren Sie es auf die übliche Weise - und das ist alles. OpenCPU enthält keine "Widgets" oder "fancy stuff" - es ist nur eine Möglichkeit, Ihre Anwendungen im Web offenzulegen. Es ist eine stabile, schnelle und zuverlässige Lösung. Ich benutze es seit langem kommerziell und bin noch nie enttäuscht worden. Der einzige Nachteil ist, dass man Java-basierte Pakete (wie xlsx) aufgrund eines sehr spezifischen Java-Fehlers nicht verwenden kann. Bitte beachten Sie auch, dass Sie anfangen müssen, "RESTfuly" (staatenlose Anrufe) zu denken, was heutzutage der Standard ist, aber nicht trivial (Sie können einen groben Start haben). – Bastian

Verwandte Themen