2017-03-09 3 views
0

Ich entwickle eine Web-Anwendung, die mit einigen R-Skripten interagieren sollte und ich würde sehr gerne OpenCPU verwenden. Ich sehe jedoch nicht, ob es irgendeinen Weg gibt, andere AJAX-Anfragen zu machen, außer die R-Skripte aufzurufen oder ihre Ergebnisse abzurufen.OpenCPU Server Anfragen

Ich muss R Skriptbeschreibungen und andere Sachen senden, die sich ändern können, also muss es in der Laufzeit durch Anforderungen zum Server getan werden.

Wenn jemand freundlich genug wäre, kurz zu erklären, ob das möglich ist, wäre ich sehr dankbar.

+0

Können Sie die vorgeschlagenen "Konversationen" zwischen dem Javascript-Client und dem Opencpu-Server erweitern? Zum Beispiel könnte ein einfaches sein -> POST/ocpu/library/stats/R/rnorm? N = 1', '<-" [0.6216] "'. (Ich weiß, das ist nicht unbedingt richtig, nur für Klarheit/Diskussion.) – r2evans

+0

Vielleicht eine dumme Frage, aber haben Sie die [OpenCPU API] (https://www.opencpu.org/api.html) gelesen? Es beschreibt den Mechanismus zum Aufrufen von Funktionen mit Argumenten. Solange das, was Sie beschreiben, für jeden Anruf eingestellt ist (und sich während des Anrufs nicht ändert), sollte es Ihnen gut gehen. – r2evans

Antwort

0

Ich nehme an, wenn Sie Update-Beschreibungen sagen, dass Sie die Datei DESCRIPTION bedeuten, die als die Definition des R-Pakets selbst dient. Wenn Sie dies oder den Inhalt des R-Skripts ändern, müssen Sie eine neue Version in Open CPU veröffentlichen. Ein paar Anmerkungen aus meiner Erfahrung, die ähnlich wie bei Ihnen scheint:

  1. Ich habe innerhalb von OpenCPU Installieren von Paketen einige Probleme, das Ausführen von Skripts hatte, die in CRAN sind aber in der OpenCPU Paketliste nicht zur Verfügung. OpenCPU kann Pakete aus Github mithilfe der Funktion install_github aus dem Paket "devtools" abrufen. Sie müssen möglicherweise manuell in Ihrem R-Skript mit install.packages installieren, wenn Ihr Skript eine R-Funktion verwendet, die die öffentliche OpenCPU nicht hat. Dies kann hilfreich sein, wenn der Aufruf von library oder install.packages nicht funktioniert.

    library('devtools') 
    
    install.packages("BIOMASS", repos = "https://cran.opencpu.org", method = "libcurl") 
    library("BIOMASS") 
    

Die Liste der installierten Pakete auf dem öffentlichen OpenCPU ist here Wenn Sie ein anderes Paket verwenden, die auf CRAN zur Verfügung steht, müssen Sie es als eine Abhängigkeit in Ihrem Import Abschnitt in dem R-Paket hinzufügen BESCHREIBUNG Datei. Sie können Namespacing auch verwenden, um die Verwendung von PACKAGENAME :: FUNCTIONNAME in Ihrem Skript zu vermeiden.

  1. Wenn Sie in der Öffentlichkeit OpenCPU veröffentlichen, können Sie nur Ihr Paket once every 24 hours aktualisieren.
  2. Die Pipeline, die ich hilfreich gefunden habe, ist, mein Paket zu entwickeln, lokal einen Testcode zu schreiben, der es verwendet, und wenn ich ziemlich zuversichtlich bin, schiebe es an mein github-Repository. Hier habe ich eine webhook setup, um das neue Paket in der öffentlichen OpenCPU-Instanz zu veröffentlichen. Je nachdem, wie Sie Ihre Entwicklungsumgebung eingerichtet haben, können Sie sie stattdessen manuell veröffentlichen. Wenn Sie beispielsweise Ihre eigene OpenCPU-Instanz hosten, wäre es sinnvoller, sie in Ihrer Instanz anstatt in der öffentlichen Instanz zu veröffentlichen.
  3. Der relevante Abschnitt in der OpenCPU API Dokumentation ist, wo es über die R Package API spricht. Es gibt auch eine Dokumentation in der zum Installieren von Paketen, wenn Sie Ihre eigene OpenCPU hosten.
  4. Wenn Sie Meteor verwenden, war meine Erfahrung, dass es am besten war, direkte Aufrufe der ReSTful/HTTP API in OpenCPU direkt zu machen. Das Javascript-Client-Paket funktionierte nicht für mich in Meteor und die HTTP-API funktioniert gut.
Verwandte Themen