2013-07-15 14 views
36

Pracuję nad projektem, który wymaga trochę kodu R do uruchomienia dla niektórych analizy danych. Projekt jest głównie w JavaScript i potrzebuję sposobu na uruchomienie kodu R z JS. Moje badania nie znalazły jeszcze dobrego sposobu, aby to zrobić. Czy jest jakiś sposób to zrobić?Czy istnieje sposób na uruchomienie kodu R z JavaScript?

Ponadto nie mam doświadczenia z R (inna osoba dostarcza kod R).

+0

Używasz IE lub innych przeglądarek ? Internet Explorer ma mechanizm do skryptowania systemu Windows z javascript, ale musiałbyś zmienić ustawienia bezpieczeństwa ... a następnie używając 'Rscript.exe' możesz uruchomić' twójScript.R' w ten sposób 'var shell = new ActiveXObject (' WScript.Shell ") shell .Run (" Rscript yourScript.R arg1 ");' – agstudy

+0

Teraz rozwijam się w Chrome. Nie sądzę, że łatwo będę mógł się przełączyć. –

+0

To jest Javascript * w przeglądarce * prawda? To jest dla klienta WWW? Jest to ważne, ponieważ obecnie JS nie jest tylko językiem klienta WWW i może działać jako w pełni uprzywilejowany język (zobacz node.js) na komputerze, a także język piaskownicy w przeglądarce internetowej. – Spacedman

Odpowiedz

19

Jeśli nie masz nic przeciwko uruchomieniu kodu R na serwerze, powinieneś spojrzeć na OpenCPU. Zapewnia REST API i odpowiednią bibliotekę JavaScript do wysyłania kodu R na serwer i otrzymywania wyników z powrotem. W szczególności zajmuje się problemami bezpieczeństwa, które mogą wyniknąć z uruchamiania R jako serwera (kod R może uruchamiać dowolne polecenia powłoki, między innymi). Istnieją publiczne instancje demonstracyjne, których możesz użyć do wypróbowania, a this page zapewnia prosty samouczek.

11

Co powiecie na R-node?

myślę inny przestrajający byłoby użyć node.js jako serwer (http://nodejs.org/) i nazywamy R od wewnątrz jako procesu potomnego, szukaj w dokumentacji API node.js do specyfiki.

Również spojrzeć na to z potwierdzeniem: Is it possible to execute an external program from within node.js?

Uwaga: węzeł można uruchomić dowolny skrypt (-y) JS może masz, ale nie musi być koniecznie węzeł specyficzne.

+0

Czy możesz dodać wyjaśnienie węzła R? –

+1

Oczywiście, nie próbowałem go osobiście, ale jest to cytowane bezpośrednio z gitourious, wystarczy kliknąć ten mały więcej ... link :) //// R-Node to front-end do pakiet analizy statystycznej R. Korzystając z tego interfejsu, można z dowolnej przeglądarki internetowej połączyć się z instancją R działającą na zdalnym (lub lokalnym) serwerze i współdziałać z nią, wysyłając polecenia i odbierając odpowiedzi. W szczególności polecenia graficzne, takie jak plot() i hist(), zostaną> wykonane w przeglądarce, rysując wykres jako obraz SVG. –

+2

Zawsze lepiej mieć informacje tutaj, a nawet lepiej w samej odpowiedzi. Strony internetowe mają paskudny zwyczaj przenoszenia lub edytowania. Wygląda jednak na przydatny pakiet, więc miejmy nadzieję, że będzie się trzymać. –

0

Nie jest to najlepszy sposób, ale udało mi się wykonać następujące czynności dla mojego własnego projektu Javascript + R (silly.r to skrypt R, który znajduje się w katalogu "r"). I w zasadzie prowadził kod R jako polecenia terminala z mojego wyraźnego serwerze:

app.get('/sfunction', function (req, res) { 
 
    exec('Rscript r/silly.r this is a test', function(error, stdout, stderr) { 
 
     if (error) { 
 
      console.log(error); 
 
      res.send(error); 
 
     } 
 
     else if (stderr) { 
 
      console.log(stderr); 
 
      res.send(stderr); 
 
     } 
 
     else if (stdout) { 
 
      console.log("RAN SUCCESSFULLY"); 
 
      res.sendfile("savedoutput/test.json"); 
 
     } 
 
    }); 
 
});

Kod jest od linii 167-182 stąd: https://github.com/ngopal/VisualEncodingEngine/blob/master/jsserver/app.js

Powiązane problemy