2013-06-04 14 views
7

Für den Aufbau einiger Webdienste mit R verwende ich normalerweise RApache, aber ich möchte Shiny sehen, um zu sehen, was es tun kann. Problem ist, dass für diese Situation, in der ich es mir vorstelle zu verwenden, ich keinen Server zur Verfügung habe, wo ich R & glänzend ausführen kann, noch kann ich Daten auf einen anderen Computer übertragen, auf dem es läuft. Ich habe nur einen Desktop und möchte die Shiny-Anwendung anderen Benutzern zeigen, ohne dass sie R auf ihren Desktops installieren müssen, ohne die IT über diese Installation zu belästigen.glänzend mit tragbaren R?

Daher meine Frage. Ist es möglich, dass ich R portable - http://sourceforge.net/projects/rportable/files/R-Portable/ auf einem freigegebenen Laufwerk installiere, das mit Kollegen geteilt wird und dass die Shiny-Anwendung mit der portablen R-Version interagieren kann? Wenn dies möglich ist, hat jemand es ausprobiert und ist bereit, etwas von seinem Code zu teilen, um zu beweisen, dass es funktioniert?

+0

Ich denke, das mehr eine Frage für Super-User als Stapelaustausch als Software-Installation, nicht – Simkill

+0

Codierung Ich bin nicht daran interessiert, über die Software-Installation. Das weiß ich zu tun. Ich bin nur daran interessiert, wie Shiny weiß, mit welchem ​​R es kommunizieren soll. – jwijffels

+0

Ich mache das häufig bei der Arbeit. Ich habe R + -Bibliotheken auf dem Dateiserver installiert und die Karte über den Dateiserver auch mit den Dateien ui.r en server.R geteilt. – JT85

Antwort

3

Das sollte gut funktionieren, vorausgesetzt, Sie können Ihr R-Portable-Setup mit einer portablen Paketbibliothek ausstatten. Shiny startet R nicht, Sie starten R und laden und starten Ihre Shiny-App (unter Verwendung von shiny::runApp()), und der Browser und der R-Prozess kommunizieren über TCP.

Wenn Ihre Apps nicht privat sein müssen, können Sie auch ein Konto auf RStudios eigenem Shiny-Hosting beantragen. Es ist kostenlos während der Beta. https://rstudio.wufoo.com/forms/shiny-server-beta-program/

+0

Großartig. Danke für die Bestätigung. Ich werde das R-portable-Setup ausprobieren. – jwijffels

+0

glänzend läuft und hört standardmäßig auf Port 8100, aber ich kann nicht sehen, ob es nur auf localhost oder auf allen Schnittstellen. Angenommen, es * kann * externe Schnittstellen abhören, dann müssen Sie es nur ausführen und die URL jedem geben, der Ihre App sehen möchte. Andere Ports als Port 80 könnten jedoch ein Problem mit den Firewalls von Leuten sein, und Port 80 benötigt root-Rechte (zumindest unter Linux), so dass du R als root ausführen wirst ... – Spacedman

+0

Hmm, ich habe R-Portable mit der Bibliothek ausprobiert (glänzend); runExample ("01_hello"); aber ich bekomme: "Fehler in as.environment (x): ungültiges Objekt für 'as.environment'", verursacht durch cacheContext <- CacheContext $ new(). Gibt es Hinweise darauf, was diesen Fehler verursacht? Es läuft aber mit dem nicht portablen R funktioniert ... also was ist der Unterschied zwischen den 2? – jwijffels

2

OS: Windows 7 - 64 Bit

Folgen Sie den Schritten wie in den unten stehenden Link erklärt, mit Ausnahme einer einzigen Batchdatei erstellen, die glänzende App laufen, weil der Vorschlag, einen Web-Browser in diesem Web-Link zu starten funktioniert nicht (Webbrowser öffnet sich ohne App-Inhalt), zumindest für mich.

Dieser Batch-Skript findet ein UNUSED unprivilegierten PORT und verwendet es eine lokale Web-Anwendung zu öffnen (Portable R Shiny App) mit tragbarem Google Chrome Web-Browser von einem USB-Flash-Laufwerk. Im obigen Weblink wird der Vorschlag des Autors, separate runShinyApp.R und run.bat zu erstellen, auf eine einzelne Batch-Datei komprimiert, wie unten angegeben.

@echo off 
    title 'My Shiny APP' 

    setlocal ENABLEDELAYEDEXPANSION 

    for /l %%X in (1025,1,65535) do ( 
     netstat -o -n -a | findstr :%%X 
     if !ERRORLEVEL! neq 0 ( 
      set avail_port=%%X 
      goto eof 
     ) 
    ) 

    :eof 
    SET ROPTS=--no-save --no-environ --no-init-file --no-restore --no-Rconsole 

    start "" ".\GoogleChromePortable\App/Chrome-bin/chrome.exe" "http://localhost:!avail_port!/" 

    R-Portable\App\R-Portable\bin\Rscript.exe %ROPTS% -e "require(methods); shiny::runApp('./shiny', launch.browser = FALSE, port = !avail_port!)" 1> ShinyAppOut.log 2> ShinyAppMsg.log 
Verwandte Themen