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 :

[Perl et R] rejet des arguments


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de VinnieMc
    Inscrit en
    Décembre 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 208
    Par défaut [Perl et R] rejet des arguments
    Bonjour, j'ai un script dans lequel je fais une comparaison entre les éléments de deux tableaux, un à un, et stoque les indices des élements dans deux autres tableaux, jusque là tout va bien, puis je fais un appel à la fonction system() pour lancer le langage R http://www.r-project.org/avec comme arguments les deux tableaux avec les indices que j'utilise comme vecteurs avec la foncton R plot(). Le problème c'est que les arguments ne sont pas pris en compte j'obtiens ce message; puis R est lancé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    C:\Documents and Settings\nom\Bureau>perl -w SIMR.pl
    ARGUMENT 'abs <- c (0 1 2 3 4 5 6 7 8 9)' __ignored__
     
    ARGUMENT 'ord <- c (0 1 2 3 4 5 6 7 8 9)' __ignored__
     
    ARGUMENT 'plot(abs,ord)' __ignored__

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    my @tab_1=('un','deux','trois','quatre','cinq','six','sept','huit','neuf','dix');
    my @tab_2=('un','deux','trois','quatre','cinq','six','sept','huit','neuf','dix');
     
    my @vec_abs=();
    my @vec_ord=();
     
    for($i=0;$i<@tab_1;$i++){
    	if ($tab_1[$i] eq $tab_2[$i]){
    		push(@vec_abs,$i);
    		push(@vec_ord,$i);
    		}
    	}
     
    system("R", "abs <- c (@vec_abs)","ord <- c (@vec_ord)","plot(abs,ord)");

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    quand un array perl est mis entre guillemet ses elements sont joints par des espaces (par defaut, si on a pas changé la valeur de la variable speciale $")

    donc par exemple dans ton code cette chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @vec_abs = (1, 2, 3); # par exemple;
    print "abs <- c (@vec_abs)"
    donnera ceci:
    mais je suppose que tu veux que tes elements soient separés par une virgule (je suppose, je ne connais pas la syntaxe de ligne de commande de R)

    donc utilise join() (mieux vaut ne pas bidouiller avec la variable $" si l'on ne sait pas maitriser sa portée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my @vec_abs = (1, 2, 3); # par exemple;
    my $arg1 = "abs <- c (". join(",", @vec_abs). ")";
    print $arg1
    ce qui te donnera
    mais bon dans tous les cas je te conseil plutot d'utilise le wrapper R pour perl qu'on peu trouver sur CPAN :
    http://search.cpan.org/~gmpassos/Statistics-R/

    ou alors le module RSPerl qu'on ne trouve pas sur CPAN, si tu es sou linux (mais visiblement non)

  3. #3
    Membre confirmé Avatar de VinnieMc
    Inscrit en
    Décembre 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 208
    Par défaut
    Merci Pospos, j'ai installé statistics-R, mais lorsque j'utilise la fonction plot() avec R il m'affiche un graphique, alors que lorsque je passe par un scrit Perl il n'affiche rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      use Statistics::R ;
     
      my $R = Statistics::R->new() ;
     
      $R->startR ;
     
      $R->send(q`postscript("file.ps" , horizontal=FALSE , width=500 , height=500 , pointsize=1)`) ;
      $R->send(q`plot(c(1, 5, 10), type = "l")`) ;
     
      my $ret = $R->read ;
     
      print $ret;
     
      $R->stopR() ;

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    désolé je ne peux pas t'aider pour ca, je n'ai jamais utilisé ce module (ni R).
    Mais je connais kk1 qui utilise perl et R tous les jours (je ne sais pas si il utilise ce module) donc je lui demande et je te tiens au courant dans la semaine.

  5. #5
    Membre confirmé Avatar de VinnieMc
    Inscrit en
    Décembre 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 208
    Par défaut
    Merci, j'apprécie vraiment ton aide.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    bon ben désolé, le mec en question n'utilise pas ce module et ne semble pas vraiment enclin à me repondre....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Validation des arguments passés au programme perl
    Par chalu133 dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2014, 17h06
  2. passer des arguments accentues a perl (sous windows)
    Par newnew dans le forum Langage
    Réponses: 6
    Dernier message: 14/09/2006, 12h12
  3. [perl/GD/CGI] trouver des exemples graphiques
    Par LE NEINDRE dans le forum Web
    Réponses: 4
    Dernier message: 28/07/2005, 17h58
  4. Réponses: 2
    Dernier message: 15/02/2005, 14h18
  5. Réponses: 9
    Dernier message: 29/07/2003, 14h41

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