2013-07-15 6 views
36

Ich arbeite an einem Projekt, das erfordert, dass einige R-Code für einige Datenanalyse ausgeführt werden. Das Projekt ist hauptsächlich in JavaScript, und ich brauche eine Möglichkeit, um R-Code von JS auszuführen. Meine Forschung hat noch keinen guten Weg gefunden, es zu tun. Gibt es einen Weg dazu?Gibt es eine Möglichkeit, R-Code von JavaScript auszuführen?

Auch habe ich fast keine Erfahrung mit R (eine andere Person liefert den R-Code).

+0

Haben Sie verwenden IE oder anderen Browser ? Internet Explorer hat einen Mechanismus um Windows von Javascript zu scripten, aber Sie müssten Ihre Sicherheitseinstellungen anpassen ... dann können Sie mit 'Rscript.exe'' yourScript.R' wie folgt ausführen: 'var shell = new ActiveXObject (' WScript.Shell '); shell .Run ("Rscript yourScript.R arg1"); ' – agstudy

+0

Momentan entwickle ich in Chrome. Ich glaube nicht, dass ich leicht wechseln kann. –

+0

Das ist Javascript * im Browser * richtig? Dies ist für einen Web-Client? Das ist wichtig, denn heutzutage ist JS nicht nur eine Web-Client-Sprache, sondern kann als vollständig privilegierte Sprache (siehe node.js) auf einem Computer sowie als Sandbox-Sprache in einem Web-Browser ausgeführt werden. – Spacedman

Antwort

19

Wenn Sie mit dem R-Code auf einem Server arbeiten, sollten Sie einen Blick auf OpenCPU werfen. Es stellt eine REST-API und eine entsprechende JavaScript-Bibliothek zum Senden von R-Code an den Server und zum Abrufen der Ergebnisse bereit. Insbesondere kümmert es sich um die Sicherheitsprobleme, die auftreten können, wenn R als Server ausgeführt wird (R-Code kann unter anderem beliebige Shell-Befehle ausführen). Es gibt öffentliche Demo-Instanzen, die Sie verwenden können, um es auszuprobieren, und this page bietet ein einfaches Tutorial.

11

Wie wäre es mit R-node?

denke ich, eine andere alternative node.js als Server (http://nodejs.org/) und rufen R von innen als Kindprozess, suchen Sie die Node.js API-Dokumentation für Einzelheiten zu verwenden wäre.

Betrachten Sie auch diese zur Bestätigung: Is it possible to execute an external program from within node.js?

Hinweis: Knoten jede JS Skript ausführen können (s) Sie haben können, sie müssen nicht knotenspezifisch sein müssen.

+0

Könnten Sie eine Erklärung von R-Knoten hinzufügen? –

+1

Sicher, ich habe es nicht persönlich ausprobiert, aber das wird direkt von gitourious zitiert, Sie mussten nur auf diesen kleinen Link klicken :) //// R-Node ist ein Web-Front-End zu das statistische Analysepaket R. Mit diesem Frontend können Sie von jedem Webbrowser aus eine Verbindung mit einer R-Instanz herstellen, die auf einem Remote- (oder lokalen) Server ausgeführt wird, und mit ihm interagieren, Befehle senden und die Antworten empfangen. Insbesondere Graphikbefehle wie plot() und hist() werden im Browser ausgeführt und zeichnen das Diagramm als SVG-Bild. –

+2

Immer besser, die Infos hier auf SO und noch besser in der Antwort selbst zu haben. Webseiten haben die unangenehme Angewohnheit, sich zu bewegen oder bearbeitet zu werden. Sieht wie ein nützliches Paket aus, also hoffentlich wird es bleiben. –

0

Dies ist bei weitem nicht der beste Weg, aber ich konnte folgendes für mein eigenes Javascript + R-Projekt machen (silly.r ist ein R-Skript, das im Verzeichnis "r" lebt). Ich lief im Grunde den R-Code als ein Terminal-Befehl von meinem Express Server:

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"); 
 
     } 
 
    }); 
 
});

Der Code von Linien 167-182 von hier: https://github.com/ngopal/VisualEncodingEngine/blob/master/jsserver/app.js

Verwandte Themen