2012-04-24 12 views
18

Muszę opracować interfejs sieciowy, umożliwiający użytkownikowi wprowadzenie niektórych danych wejściowych, które zostaną przekazane do Rscript jako parametry i zwrócą wynik użytkownikowi.Interfejs sieciowy do programu R

Mam kilka pytań dla kogoś, kto wykonali podobny interfejs WWW:

  1. Jakie ramy internetowej, aby skorzystać
  2. Jaki jest najprostszy sposób komunikowania się z interfejsu WWW i Rscripts (w aplikacji internetowej architektura)
  3. powinienem zainstalować R na serwerze (jeśli tak jak lauch z Rscripts z interfejsu WWW)
+1

http://opencpu.org/ lub jeśli potrzebujesz interakcji również dla osób spoza sieci: http://www.rforge.net/Rserve/ – Hansi

+2

Bardzo podobne: http://stats.stackexchange.com/questions/ 9699/using-r-online-without-installation-it/9709 # 9709 (RApache jest prawdopodobnie tym, czego szukasz) – nico

+0

lub zobacz: http: // stackoverflow.com/questions/1397097/r-web-application-introduction –

Odpowiedz

13

R ma swój własny serwer WWW, więc można zrobić całość w ciągu R. Wtedy nie ma potrzeby przejmować się wybierając ramy, lub uzyskanie im rozmawiać ze sobą i tak dalej - wystarczy użyć ramy R:

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

Jeśli nie podoba ci się, że dla wykonania lub z innych przyczyn, prawie każdy ramy będą rozmawiać R taki czy inny sposób , więc skorzystaj z tego, co znasz. Używałbym Django i albo zadzwoniłbym do R przez Rpy2, albo uruchomiłbym proces Rservera, ale jeśli potrafisz programować w PHP lub Javie, używaj architektury opartej na tych językach. Jeśli nie możesz programować w czymkolwiek poza R, to albo naucz się Pythona, albo użyj Rook.

5

Bardzo wygodnym sposobem jest połączenie Rstudio Server i Rook (zobacz inne odpowiedzi dla linków).

Serwer Rstudio zapewnia bardzo łatwy sposób konfiguracji serwera R, do którego ma dostęp każdy, kto znajduje się w sieci. Zwykle używasz go do edycji i uruchamiania skryptu na tym serwerze.

Rook umożliwia łatwe tworzenie interfejsu internetowego poprzez mieszanie kodu html dla tekstu i interakcji (np. Pola wprowadzania itp.) I kodu R. Po uruchomieniu skryptu uruchom go z poziomu serwera Rstudio Server, a każdy użytkownik (z dostępem) będzie mógł się z nim połączyć na tym samym IP co serwer Rstudio.

Używam tej konfiguracji razem z googleVis i jestem bardzo zadowolony.

3

OpenCPU jest obecnie, moim zdaniem , najbardziej zaawansowany darmowy pakiet do tworzenia bezpaństwowych (REST) ​​serwisów WWW w R. Shiny jest świetnym frameworkiem, ale jeśli planujesz użyć darmowej wersji społecznościowej, pamiętaj, że nie obsługuje on równoczesnych połączeń.

+0

Może brakuje mi wyobraźni, ale nie mam pojęcia, w jaki sposób OpenCPU może mi pomóc (łatwo) rozwinąć aplikacje internetowe w R. Czy jest to framework sieciowy? Jeśli tak, ma najgorszą stronę opisu, jaką widziałem. –

+1

OpenCPU udostępnia funkcje R jako usługi REST. Oparty jest na środowisku RApache, więc obsługuje połączenia współbieżne według projektu - nie ma problemu z wieloma użytkownikami, którzy uzyskują dostęp do usługi sieciowej w tym samym czasie. Obsługuje także SL (Shiny ma zarabiać tylko w płatnej wersji). Najpierw musisz utworzyć zwykły pakiet R (np. Używając RStudio) zawierający twoją aplikację: kod R, strony HTML, CSS, skrypty JS (jQuery, Bootstrap, itp.) I inne zasoby. Strony HTML są statyczne (bez wstępnego przetwarzania jak w ASP.NET), ale z biblioteką JS opartą na Ajax OpenCPU można je łatwo modyfikować. – Bastian

+0

Po zainstalowaniu pakietu z aplikacją, instalujesz go w zwykły sposób - i to wszystko. OpenCPU nie zawiera żadnych "widżetów" ani "fantazyjnych rzeczy" - to tylko sposób na ujawnienie swoich aplikacji w sieci. To stabilne, szybkie i niezawodne rozwiązanie. Używam go komercyjnie przez długi czas i nigdy się nie zawiodłem. Jedyną wadą jest to, że nie można używać pakietów opartych na Javie (takich jak xlsx) ze względu na bardzo specyficzną awarię Javy. Pamiętaj też, że będziesz musiał zacząć myśleć "RESTfuly" (połączenia bezstanowe), co jest standardem w dzisiejszych czasach, ale nie jest trywialne (możesz mieć ciężki start). – Bastian

Powiązane problemy