IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

options du bridge du module Statistics::R


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Points : 66
    Points
    66
    Par défaut options du bridge du module Statistics::R
    Bonjour à tous,

    Je dois automatiser des procédures statistiques que l'on exécute avec le logiciel R.
    J'utilise donc le module Statistics::R.
    Lorsque je lance un script depuis la console la connexion s'établit sans problème et mes traitements statistiques s'effectuent sans soucis.

    Maintenant, j'aimerais pouvoir lancer de tels scripts depuis mon serveur web (Wamp2.0). Or ça ne fonctionne pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #!C:/wamp/apps/Perl/bin/perl.exe
    #===============================
    # Exemple de travail avec R depuis un cgi
    #===============================
    use strict;
    use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    use Statistics::R;
     
    my $cgi = CGI->new;
    my $R = Statistics::R->new();
     
    print "Content-type: text/html\n\n";
     
    $R->startR;
    $R->send('a<-3');
    $R->send('b<-4');
    $R->send('calc<-a+b');
    $R->send('print(calc)');
    my $return_r = $R->read;
    print $return_r;
    $R->stopR();
    En regardant dans le errorlog d'Apache, j'obtiens ceci :
    essai_r_cgi.pl: Can'find R binary! at C:/wamp/apps/Perl/site/lib/Statistics/R.pm line 74.
    essai_r_cgi.pl: Can't call method "startR" on an undefined value at C:/wamp/bin/apache/Apache2.2.11/cgi-bin/essai_r_cgi.pl line 17.
    Donc le script Perl ne trouve pas le dossier où est situé l'exécutable de R.

    En regardant la description du module sur le CPAN, je vois que l'auteur du module renseigne qu'on peut passer des options à l'objet NEW...
    NEW
    When creating the R bridje object (Statistics::R), you can set some options:
    r_bin
    The path to the R binary.
    Si je comprends bien, avec l'option r_bin on peut renseigner le chemin où le module peut trouver l'exécutable de R? Mais, pour la syntaxe, je ne comprends pas comment passer cet option à l'objet ?

  2. #2
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Points : 1 491
    Points
    1 491
    Par défaut
    Voici les paramètres pour spécifier l'espace de travail et l'exécutable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            $R = Statistics::R->new(
              "log_dir" => $espace_travail,
              "r_bin"   => $rbin,
            );
    $rbin correspond au chemin vers ton exécutable.
    Cela demande du courage d'en tirer du plaisir
    Quand on n'a qu'un marteau, tous les problèmes ressemblent à un clou

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Pense également à mettre à jour ta version de Statistics::R, la version actuelle est la 0.07 .

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Points : 66
    Points
    66
    Par défaut
    Merci pour ces réponses rapides

    J'ai bien mis à jour le module Statistics::R, version 0.07

    J'ai suivi les informations de stoyak. Voici le morceau de code que j'utilise maintenant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my $rbin = 'C:/R/R-2.12.0/bin/';
    my $R = Statistics::R->new(
    	"r_bin" => $rbin
    );
    Le cgi qui lance R fonctionne, je récupère le résultat des analyses dans une page web.

    Malheureusement, mon script en console ne fonctionne plus... Pourtant, c'est la même démarche de connexion à R que j'utilise. Voilà ce que l'interpréteur me balance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    readdir() attempted on invalid dirhandle $DH at C:/wamp/apps/Perl/site/lib/Statistics/R/Bridge.pm line 633.
    closedir() attempted on invalid dirhandle $DH at C:/wamp/apps/Perl/site/lib/Statistics/R/Bridge.pm line 645.
    Use of uninitialized value $ver_dir in concatenation (.) or string at C:/wamp/apps/Perl/site/lib/Statistics/R/Bridge.pm line 730.
    readdir() attempted on invalid dirhandle $DH at C:/wamp/apps/Perl/site/lib/Statistics/R/Bridge.pm line 633.
    closedir() attempted on invalid dirhandle $DH at C:/wamp/apps/Perl/site/lib/Statistics/R/Bridge.pm line 645.
    Can'find R binary! at C:/wamp/apps/Perl/site/lib/Statistics/R.pm line 36.
    Can't call method "startR" on an undefined value at regression.pl line 83.
    En lisant la doc, je trouve ceci :
    readdir()/closedir()/etc. attempted on invalid dirhandle
    These new warnings are now emitted when a dirhandle is used but is either closed or not really a dirhandle.
    Est-ce que ça veut dire que le dossier "reste" utilisé par le bridge établi par le cgi qui a été lancé avant le script en console ?

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Si tu ne veux pas avoir de soucis :
    Tu dois bien penser à fermer ta connexion R à la fin de ton programme console ou cgi
    Pense également à préciser un répertoire de travail pour R dans tes programmes, sinon R utilise un par Défaut. Je pense que le CGI et le script devait donc utiliser le même.

    Utilise le code de stoyak
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $R = Statistics::R->new(
              "log_dir" => $espace_travail,
              "r_bin"   => $rbin,
            );
    et précise "log_dir".

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Points : 66
    Points
    66
    Par défaut
    J'ai travaillé avec l'instruction complète de stoyak, mais j'ai toujours le même message d'erreur et j'utilisais bien l'instruction dans chacun des scripts.

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    As tu essayé d'utiliser un répertoire de travail différent en console de celui en cgi ?

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Points : 66
    Points
    66
    Par défaut
    Oui, c'est la cas.

Discussions similaires

  1. module Statistics ::R
    Par kiki2110 dans le forum Modules
    Réponses: 2
    Dernier message: 22/06/2013, 14h08
  2. Propager des options au travers de modules et packages
    Par Thelvyn dans le forum Général Python
    Réponses: 20
    Dernier message: 06/06/2011, 12h12
  3. Lien case d'option sur excel et module
    Par Xocoi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2008, 00h48
  4. utilisation module Statistics::R
    Par croixdebois dans le forum Modules
    Réponses: 4
    Dernier message: 30/10/2006, 22h01
  5. Charger un module automatiquement avec des options debian
    Par ZiMo dans le forum Administration système
    Réponses: 4
    Dernier message: 22/12/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo