2010-12-06 9 views
2

J'ai développé une application Java qui utilise JRI pour utiliser le paquet ptw.JRI peut-il accéder aux paquets installés par l'utilisateur sous Vista?

Sous Linux (Ubuntu 10.04, R 2.10.1, JRI 0.5.0) cela fonctionne très bien.

Cependant, Vista (R 2.12.0, JRI 0.5.0) lorsque l'application évalue "bibliothèque (PTW)" l'erreur suivante se produit:

Erreur dans la bibliothèque (PTW): objet 'ptw' non

Lorsque j'exécute R à partir de la ligne de commande Vista et exécute la commande "library (ptw)", il n'y a aucun problème.

Si je copie le package ptw de ma bibliothèque% USERPROFILE% \ Documents \ R \ win vers% R_HOME% \ library, le problème disparaît. Cependant, je ne veux pas que mes utilisateurs aient à le faire, en fait, certains pourraient ne pas avoir la permission de le faire.

Par conséquent, comment puis-je demander à JRI d'appeler un R-Engine ayant accès aux packages que l'utilisateur a installés dans sa bibliothèque % USERPROFILE% \ Documents \ R \ win?

J'ai aussi asked sur la liste de diffusion r-help mais pas de joie.

Je suis au courant du libloc paramètre pour la fonction bibliothèque() mais je préfère quelque chose d'un peu moins fragile, à savoir automatique plutôt que la configuration nécessitant ...

Répondre

2

Si les emplacements sont différents de la par défaut, ils doivent être mentionnés dans le fichier Rprofile.site, où .libPaths() est utilisé ou la variable .Library.site est définie. Vérifiez si vous pouvez trouver cela dans le fichier Rprofile.site de votre version R, laissez votre application imprimer la sortie de la fonction .libPaths(). Pour autant que je sache (mais je peux me tromper), JRI utilise le Rserve, qui ne lance pas R de façon classique. Je soupçonne que sur une fenêtre, cela oublie le Rprofile.site (ce qui serait en fait un bug). Je ne vois pas une autre raison pour laquelle ça ne marcherait pas, mais je ne suis pas un expert.

Une solution consiste à:

  • source de l'Rprofile.site au début.
  • ou ajouter un emplacement possible au .libPaths() (voir ?.libPaths)
  • ou la variable .Library.site-vous dans le script

Vous pouvez vérifier si le problème persiste sur Windows 7, parce que j'ai remarqué problème de comportement de certains programmes essayant de se connecter à R lors de l'utilisation de Vista alors que la même version fonctionne très bien sur Windows 7.

2

% USERPROFILE% \ Documents \ R \ win-library est un emplacement de bibliothèque "non standard", dans en dépit du fait qu'il est ajouté à .libPaths() automatiquement lorsque le nous er est un non-administrateur. Une fois votre JRIEngine démarré, vous pouvez ajouter l'emplacement de la bibliothèque manuellement.

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

2

Merci aux commentaires de Joris et Ian je trouve que la définition explicite la variable d'environnement R_LIBS_USER avant d'exécuter ma demande résolu le problème.

Pour une raison quelconque, cela n'est nécessaire que sur Vista (vs Linux). Sur les deux systèmes, le fichier Rprofile.site est un modèle vide.

+0

C'est aussi une façon de le faire. +1 pour la référence à R_LIBS_USER, j'ai oublié de mentionner celui-là. –

Questions connexes