2010-12-06 5 views
2

Ich habe eine Java-Anwendung entwickelt, die JRI verwendet, um das Paket ptw zu verwenden.Kann JRI auf Benutzer-installierte Pakete auf Vista zugreifen?

Unter Linux (Ubuntu 10.04, R 2.10.1, JRI 0.5.0) funktioniert es gut.

jedoch auf Vista (R 2.12.0, JRI 0.5.0), wenn die Anwendung wertet "Bibliothek (PTW)" der folgende Fehler auftritt:

Fehler in der Bibliothek (PTW): Objekt 'PTW' nicht gefunden

Wenn ich R von der Vista-Befehlszeile ausführen und den Befehl "library (ptw)" ausgeben, gibt es kein Problem.

Wenn ich das Paket ptw aus meiner% USERPROFILE% \ Documents \ R \ win-Bibliothek nach% R_HOME% \ library kopiere, verschwindet das Problem. Ich möchte jedoch nicht, dass meine Benutzer das tun müssen, in der Tat haben einige möglicherweise keine Erlaubnis, dies zu tun.

Wie kann ich also JRI dazu bringen, eine R-Engine aufzurufen, die Zugriff auf Pakete hat, die der Benutzer in ihrer % USERPROFILE% \ Documents \ R \ win-Bibliothek installiert hat?

Ich habe auch asked auf der R-Hilfe-Mailingliste, aber keine Freude.

Ich bin mir der libloc Parameter für die Bibliothek() Funktion, aber ich würde etwas weniger zerbrechlich bevorzugen, dh die automatische Konfiguration nicht erforderlich ist ...

Antwort

2

Wenn die Positionen unterschiedlich sind als die Standardmäßig sollten sie in der Datei Rprofile.site erwähnt werden, wobei entweder .libPaths() verwendet wird oder die Variable .Library.site gesetzt ist. Prüfen Sie, ob Sie in der Rprofile.site-Datei Ihrer R-Version finden können, dass Ihre Anwendung die Ausgabe der Funktion .libPaths() ausgibt.

Soweit ich weiß (aber ich kann mich irren), verwendet JRI die Rserve, die R nicht auf die klassische Weise startet. Ich vermute, dass auf einem Windows dies auf der RProfile.site irgendwie vergessen wird (was eigentlich ein Bug wäre). Ich kann keinen anderen Grund sehen, warum es nicht funktionieren würde, aber ich bin kein Experte.

Eine Lösung ist:

  • Quelle der Rprofile.site am Anfang.
  • oder fügen Sie jede mögliche Lage zum .libPaths() (siehe ?.libPaths)
  • oder stellen Sie die .Library.site Variable sich im Skript

Sie könnten überprüfen möchten, ob das Problem auf Windows 7 weiterhin besteht, weil ich bemerkte problematisches Verhalten einiger Programme, die versuchen, sich bei Verwendung von Vista mit R zu verbinden, während die gleiche Version unter Windows 7 einwandfrei funktioniert.

2

% USERPROFILE% \ Dokumente \ R \ win-library ist ein "nicht standardmäßiger" Bibliotheksspeicherort in trotz der Tatsache, dass es zu .libPaths() automatisch hinzugefügt wird, wenn die us Er ist kein Administrator.

Nachdem Ihre JRIEngine gestartet wurde, können Sie den Speicherort der Bibliothek manuell hinzufügen.

jriengine.parseAndEval(".libPaths(<the directory>)");

2

Dank der Kommentare von Joris und Ian fand ich, dass ausdrücklich die Einstellung des R_LIBS_USER Umgebungsvariable vor meiner Anwendung ausgeführt wird das Problem gelöst.

Aus welchem ​​Grund auch immer ist dies nur unter Vista (vs. Linux) notwendig. Auf beiden Systemen ist die Rprofile.site-Datei eine leere Vorlage.

+0

Das ist auch eine Möglichkeit, es zu tun. +1 für den Verweis auf R_LIBS_USER, habe ich vergessen, diesen zu erwähnen. –

Verwandte Themen