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

R Discussion :

Appel de fonction dans un sous-prog


Sujet :

R

  1. #1
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Appel de fonction dans un sous-prog
    Bonjour,

    Je souhaite dans un programme principal appeler une fonction située dans un sous-programme.
    Je début en R, je ne vois pas trop comment m'y prendre.

    Pour l'instant, je fais la chose suivante:

    programme principal:
    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
     
    tm <- tktoplevel(height=500,width=1000)
    topMenu <- tkmenu(tm)
    tkconfigure(tm,menu=topMenu)
    tkwm.title(tm,"TITRE")
     
    import <- tkmenu(topMenu,tearoff=FALSE)
     
    ##Second niveau de menu
     
      # Menu déroulant de "Import de données"
      tkadd(import,"command",label="UVC", command = import.donnees.f) 
     
    ## Premier niveau de menu
      tkadd(topMenu,"cascade",label="Import de données",menu=import)
      tkadd(topMenu,"command",label="Quitter", command=function() tkdestroy(tm))
     
    tkfocus(tm)

    sous-programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    import.donnees.f = function() {
    ...}
    il se trouve que rien ne se passe à l'appel de import.donnees.f

    faut-il que j'ajoute un require ou autre en début de programme principal ?

    merci d'avance

  2. #2
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Que veux-tu dire par
    Citation Envoyé par habasque Voir le message
    fonction située dans un sous-programme
    ? Est-elle définie dans un fichier séparée, dans une autre fonction,... ?
    Citation Envoyé par habasque Voir le message
    il se trouve que rien ne se passe à l'appel de import.donnees.f
    Pas même une erreur ? N'as-tu pas oublié les parenthèses ?

  3. #3
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Error in function
    Oui je veux que la fonction soit dans un fichier séparé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error in function ()  : 
      impossible de trouver la fonction "import.donnees.f"

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    OK, dans ce cas, tu dois "sourcer" (~exécuter ligne à ligne) le fichier dans lequel est définie ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source("<chemin_vers_le_fichier>")
    avant de l'utiliser.
    Le chemin peut être relatif ou absolu.

  5. #5
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Error in file
    j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Error in file(file, "r", encoding = encoding) : 
      impossible d'ouvrir la connexion
    De plus : Warning message:
    In file(file, "r", encoding = encoding) :
      impossible d'ouvrir le fichier 'ImportDonnees' : No such file or directory
    avec le code, pour le programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    source("ImportDonnees")
    lectureFichiers(fileName1,fileName2,fileName3)
    ...
    et le programme ImportDonnees:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    lectureFichiers = function(fileName1,fileName2,fileName3) {
    ...
    je précise que les 2 programmes sont dans le même répertoire

  6. #6
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Ce qui est important, c'est surtout le chemin par rapport au répertoire de travail de R. Ce répertoire tu le trouves avec la commande
    et tu le modifie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setwd("<chemin_vers_le_dossier>")
    Ensuite, si c'est bien le répertoire où sont tes scripts R :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source("./ImportDonnees.R")
    Ce qui doit se passer dans ton cas :
    • tu exécutes le script_1.R ligne à ligne à l'aide d'un IDE (ce sont les lignes qui sont envoyées à R, pas le fichier qui est sourcé)...
    • tu évalues la ligne sachant que les deux scripts sont dans le même répertoire...
    • ça foire parce que le répertoire de travail n'a rien à voir avec l'emplacement du script_1.R (pareil pour script_2.R) !

    Est-ce que je me trompe ?

    Edit: l'erreur veut juste dire que R ne trouve pas le fichier.

  7. #7
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Sourcer le sous-prog
    salut,

    merci maintenant ca fonctionne !

    a+

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

Discussions similaires

  1. Appel de fonction dans des sous dossiers
    Par milach dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/01/2008, 14h24
  2. Réponses: 3
    Dernier message: 08/08/2006, 15h15
  3. Appeler une fonction dans un autre cadre !
    Par rich25200 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2005, 13h01
  4. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  5. [langage] Appel de fonction dans un lien
    Par drakan dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2005, 18h30

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