Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 15 sur 27

Aide Logiciel R - Programmation (ASSEZ URGENT)

  1. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Question Aide Logiciel R - Programmation (ASSEZ URGENT)

    Bonjour à tous,

    Je viens vers vous car je suis bloquée par rapport à une programmation. Voilà, j'aimerai créer une fonction pour afficher un histogramme + densité de probabilité d'une variable de mon choix (que j'ai bien créée au préalable dans la console )
    Voici mes entrées :

    Code:
    Histogrammepluies<-function(series){
      if(series==histannuel){
      annuel<-hist((an$V2),xlab="Pluviométrie annuelle",
    main="Histogramme de fréquences et densité de probabilité- Pluies annuelles de 1873 à 2004 (Paris)",freq=F)
    lines(density(an$V2),col="red",lwd=2)
      return(annuel)}
      if(series==histmensuel){
      mensuel<-hist((mois$V2),xlab="Pluviométrie mensuelle",
    main="Histogramme de fréquences et densité de probabilité- Pluies mensuelles de 1770 à 2004 (Paris)",freq=F)
    lines(density(mois$V2),col="red",lwd=2)
      return(mensuel)}
      if(series==histjour){
      journalier<-hist((jour$moyenne.BV),xlab="Pluviométrie journalière",
    main="Histogramme de fréquences et densité de probabilité-Pluies journalières de 1950 à 2004 (Paris)",freq=F)
    lines(density(jour$moyenne.BV),col="red",lwd=2)
    return(journalier)}
    }
    Il m'affiche correctement mon histogramme mais R me retourne tout de même ceci :

    Code:
    Warning messages:
    1: In series == histannuel :
      longer object length is not a multiple of shorter object length
    2: In if (series == histannuel) { :
      the condition has length > 1 and only the first element will be used
    3: In series == histmensuel :
      longer object length is not a multiple of shorter object length
    4: In if (series == histmensuel) { :
      the condition has length > 1 and only the first element will be used
    5: In if (series == histjour) { :
      the condition has length > 1 and only the first element will be used
    Auriez vous une idée ? Une petite aide à me donner ?
    Je vous remercie infiniment
    Marie de Seine Maritime.

    -----

    Dernière modification par JPL ; 04/12/2017 à 02h18. Motif: Ajout de la balise Code (#) pour garder l'indentation
     


    • Publicité



  2. minushabens

    Date d'inscription
    juillet 2014
    Messages
    5 710

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    le premier message te dit que les variables series et histannuel n'ont pas la même longueur. Tu devrais limiter l'usage de l'opérateur de comparaison == à des variables atomiques.
     

  3. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 601

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Déjà tu n'a pas de histannuel, donc des le départ le premier truc qui me choque c'est surtout que t'ai pas une erreur en plus du genre "histannuel undefined" ou "histannuel called before defined" quelque chose du genre
    il faut soit que tu determine ce qu'est histannuel dans la fonction, ou que tu l'envoi comme information a la fonction (histoplui = function(serie,histannuel) )
    ou alors si tu veux pas le donner en parametre dans la fonction mais qu'il existe bien en dehors de la fonction, que tu le transforme en variable globale
    Code:
    machin=function(){
    global histannuel
    ....
    ...
    }
    pareil pour "an$V2", je ne vois an nulle part dans la fonction, fais en une variable globale si c'est quelque chose en dehors de la fonction


    Ensuite l'erreur par elle même te dit que l'un n'est pas multiple de l'autre,
    pour résoudre ce genre de probleme, lance dans ta fonction un print(histannuel) et print(serie) tu verras ce a quoi ils correspondent exactement et ca t'indiquera ou est l'erreur dans ce que tu as fait par rapport a ce que tu voulais faire
     

  4. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Bonsoir,

    Mes variables (ex : an$V2) sont bien définies, je les ai créée avant !
    Pour l'objet histannuel, je veux juste dire :

    Si series = histannuel, alors je veux que R m'affiches tel histogramme avec tels arguments... C'est bien le but de "if" non ?
    Sinon, quel valeur attribuer à histannuel ?
    J'aurai pu aussi dire function(x){ if x=="1" {hist....}
    non?
    Je suis désolée, je débute dans le logiciel R et en programmation également...
    Merci d'avance
     

  5. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Merci pour votre réponse,

    Quel autre opérateur puis-je utiliser alors ?
    function(x){ if x==1 {print(hist)...}

    C'est mieux avec des chiffres ?
    Merci d'avance
     


    • Publicité



  6. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Merci

    Ca y'est j'ai résolu !!
    Code:
    series<-c(1,2,3)
    > Histogrammepluies<-function(series){
       if(series==1){
             hist((an$V2),xlab="Pluviométrie annuelle",
                          main="Histogramme de fréquences et densité de probabilité- Pluies annuelles de 1873 à 2004 (Paris)",freq=F)
             lines(density(an$V2),col="red",lwd=2)}    
       if(series==2){
             hist((mois$V2),xlab="Pluviométrie mensuelle",
                           main="Histogramme de fréquences et densité de probabilité- Pluies mensuelles de 1770 à 2004 (Paris)",freq=F)
             lines(density(mois$V2),col="red",lwd=2)
             }
         if(series==3){
             hist((jour$moyenne.BV),xlab="Pluviométrie journalière",
                              main="Histogramme de fréquences et densité de probabilité-Pluies journalières de 1950 à 2004 (Paris)",freq=F)
             lines(density(jour$moyenne.BV),col="red",lwd=2)
             }
     }
    
    > Histogrammepluies(1)
    > Histogrammepluies(2)
    Plus de message d'erreur !!
    Merci encore pour vos réponses et la rapidité, c'est très gentil
    Dernière modification par JPL ; 04/12/2017 à 02h19. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  7. minushabens

    Date d'inscription
    juillet 2014
    Messages
    5 710

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    tu n'as rien résolu à mon avis. Tu définis un vecteur (series) à 3 composantes et ensuite tu testes s'il est égal à 1 : if (series==1) c'est absurde.

    et programmer ne revient pas à faire en sorte qu'on n'ait plus de messages d'erreur.
     

  8. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Merci de ton aide,

    Mais je suis aussi les cours de mon professeur et ne cherche pas à être professionnelle, je vais refaire mon exercice et voir si quelque chose coince,
     

  9. minushabens

    Date d'inscription
    juillet 2014
    Messages
    5 710

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    bonjour, en fait j'avais lu ta réponse un peu vite. Ta fonction est correcte, c'est juste la définition series<-c(1,2,3) au début qui ne sert à rien et qui m'a induit en erreur.

    par contre je te conseille de passer en argument les données (jour, mois, an), c'est plus propre. Si tu ne veux pas avoir à taper ces noms à chaque appel de la fonction, tu peux spécifier des valeurs par défaut des paramètres.
     

  10. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Merci beaucoup pour votre réponse
    Je me permets de vous redemander de l'aide car là j'ai du mal à intégrer mes 3 variables qui sont dans 3 fichiers différents !! Cela veut dire que je ne peux pas par exemple lui demander dans tel fichier, travaille sur les colonnes 1 à 3...
    Je dois créer une fonction permettant de tracer une série au choix (pluie journalière, mensuelle et annuelle : provenant de 3 fichier différents !) et d'afficher ou non une courbe de tendance linéaire, quadratique ou cubique sur la série de données tracée.
    J'ai bien compris qu'il s'agit donc de créer une fonction avec 2 arguments : par exemple (série = "jour","mois" ou "année" et ajust= 0 (pas d'ajustement) ou =1 (ajustement linéaire) ou =2 (ajustement quadratique) ou =3 (ajustement cubique) !
    Là la fonction s'enrichit et je m'emmêle les pinceaux car je dois toujours retaper les varibles ! Et je ne sais pas comment spécifier à R que par exemple pour la série 1, tracer une courbe quadratique par exemple... Je suis perdue...
    Je vous transmets les lignes de codes mais je sais que c'est très fouilli...

    Code:
    series<-c("jour","mois","an"); ajust<-c(0,1,2,3)
    Graphpluies<-function(series,ajust=0){
    if(series=="jour"){plot((jour$moyenne.BV~jour$t),xlab="Jours entre 1950 et 2004",ylab="PLuviométrie",
                       main="Pluies journalières de 1950 à 2004 (Paris)",type="l",col="blue",lwd=0,5)}
    if(series=="mois"){plot((mois$V2~mois$V1),xlab="Mois entre 1770 et 2004",ylab="Pluviométrie",
                       main="Pluies mensuelles de 1770 à 2004 (Paris)",type="l",col="pink",lwd=1)}
    if(series=="an"){plot((an$V2~an$V1),xlab="Année entre 1873 et 2004",ylab="Pluviométrie",
                       main="Pluies annuelles de 1873 à 2004 (Paris)",type="l",col="purple",lwd=2)} 
    if(ajust==1){
      model<-lm(c(jour$moyenne.BV~jour$t,mois$V2~mois$V1,an$V2~an$V1))
      lines(c(jour$t,mois$V1,an$V1)~model$fitted.values,col="red",lwd=2)}
      }
    Je n'arrive pas à intégrer les 3 variables pour chaque arguments...
    Aie aie aie...
    Pourriez vous me donner un coup de pouce ?
    Merci beaucoup
    Dernière modification par JPL ; 05/12/2017 à 18h26. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  11. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 601

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Le probleme est que tu compare un élément à un vecteur avec plusieurs éléments
    series n'est pas égal a jour, il n'est pas non plus égal a mois, il n'est pas non plus égal a "an", il est tout ca à la fois
    pour ta comparaison, il faut que serie soit l'un des trois uniquement (et qu'il puisse etre changé au besoin)

    sinon ne créé pas de vecteur "serie" mais passe le en argument dans ta fonction,
    par exemple

    Code:
    
    Graphpluies<-function(series,ajust=0){
    if(series=="jour"){plot((jour$ moyenne.BV~jour$t),xlab="Jours entre 1950 et 2004",ylab="PLuviométrie",
    main="Pluies journalières de 1950 à 2004 (Paris)",type="l",col="blue",l wd=0,5)}
    if(series=="mois"){plot((mois$ V2~mois$V1),xlab="Mois entre 1770 et 2004",ylab="Pluviométrie",
    main="Pluies mensuelles de 1770 à 2004 (Paris)",type="l",col="pink",l wd=1)}
    if(series=="an"){plot((an$V2~a n$V1),xlab="Année entre 1873 et 2004",ylab="Pluviométrie",
    main="Pluies annuelles de 1873 à 2004 (Paris)",type="l",col="purple" ,lwd=2)}
    if(ajust==1){
    model<-lm(c(jour$moyenne.BV~jour$t,mo is$V2~mois$V1,an$V2~an$V1))
    lines(c(jour$t,mois$V1,an$V1)~ model$fitted.values,col="red", lwd=2)}
    }
    
    
    choix="jour"
    ajustement=0
    Graphpluies(choix,ajustement)
    ou alors si tu veux qu'il fasse les trois tu peux faire

    Code:
    Graphpluies<-function(series,ajust=0){
    if(series=="jour"){plot((jour$ moyenne.BV~jour$t),xlab="Jours entre 1950 et 2004",ylab="PLuviométrie",
    main="Pluies journalières de 1950 à 2004 (Paris)",type="l",col="blue",l wd=0,5)}
    if(series=="mois"){plot((mois$ V2~mois$V1),xlab="Mois entre 1770 et 2004",ylab="Pluviométrie",
    main="Pluies mensuelles de 1770 à 2004 (Paris)",type="l",col="pink",l wd=1)}
    if(series=="an"){plot((an$V2~a n$V1),xlab="Année entre 1873 et 2004",ylab="Pluviométrie",
    main="Pluies annuelles de 1873 à 2004 (Paris)",type="l",col="purple" ,lwd=2)}
    if(ajust==1){
    model<-lm(c(jour$moyenne.BV~jour$t,mo is$V2~mois$V1,an$V2~an$V1))
    lines(c(jour$t,mois$V1,an$V1)~ model$fitted.values,col="red", lwd=2)}
    }
    
    
    
    ajustement=0
    series=c("jour","mois","an")
    for (i in series){
    choix=i
    Graphpluies(choix,ajustement)
    }
     

  12. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Merci beaucoup

    Mais je suis perdue car comment puis-je lui demander à la fois de tracer l'une des trois variables (plot) mais aussi de créer ou non un ajustement linéaire...
    Je n'arrive pas à créer le deuxième argument comment lui dire :
    Si ajust = ajustement linéaire par exemple , il faut qu'il puisse le faire pour les 3 variables ! Or je n'arrive pas à les intégrer dans mon expression car elles ne dérivent pas du même fichier... Comment créer une liste de variables sur lequel il puisse travailler...
    Pour afficher les séries cela va mais après pour intégrer un ajustement ou non, je suis complètement bloquée...
    J'espère m'expliquer assez clairement... sinon je m'en excuse..
     

  13. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 601

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Alors je suis extrêmement mauvais en math et je ne sait absolument pas ce qu'est un ajustement quadratique ou cubique, mais puisque dans ton script tu pars sur le linéaire, je te conseillerai d'utiliser "abline" pour le représenter
    Code:
    plot(x,y)
    abline(lm(y~x))
    Si ajust = ajustement linéaire par exemple , il faut qu'il puisse le faire pour les 3 variables ! Or je n'arrive pas à les intégrer dans mon expression car elles ne dérivent pas du même fichier... Comment créer une liste de variables sur lequel il puisse travailler...
    c'est le principe d'une fonction, recevoir des données et faire le taff quelques soient les données recues, normalement tu n'est pas censé parametrer les fichiers que tu vas utiliser "dans" la fonction, tu es censé les donner en argument "à" la fonction
    il te faut donc passer tes arguments à la fonction
    Code:
    Graphpluies<-function(x,y,ajust=0){
    plot(x,y),xlab="Jours entre 1950 et 2004",ylab="Pluviométrie",
    main="Pluies de 1950 à 2004 (Paris)",type="l",col="blue",l wd=0,5)
    if(ajust==1){
    model<-lm(y~x)
    abline(model,col="red", lwd=2)}
    }
    
    
    ajustement=1
    Graphpluies(jour$t,jour$moyenne.BV,ajustement)
    ca marchera peu importe ce que tu lui envoie (les données par mois par jour ou par an)
     

  14. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 601

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Et tu dis que ces donnees sont dans des fichiers différents, imaginons que tes fichiers s'appellent "jour.csv" "mois.csv" et "an.csv"
    pour peu que tes fichiers se ressemblent tu peux en plus automatiser de la sorte


    Code:
    Graphpluies<-function(x,y,ajust=0){
    plot(x,y),xlab="Jours entre 1950 et 2004",ylab="Pluviométrie",
    main="Pluies de 1950 à 2004 (Paris)",type="l",col="blue",l wd=0,5)
    if(ajust==1){
    model<-lm(y~x)
    abline(model,col="red", lwd=2)}
    }
    
    
    
    choix="an" # oubien choix="mois", choix="jour"
    ajustement=1
    fichieraouvrir=paste(choix,'.csv')
    fichier=read.table(fichieraouvrir,sep=";",dec=",",header=T)
    Graphpluies(fichier[,1],fichier[,2],ajustement)
    tu n'as plus qu'a régler "choix" et ta fonction Graphepluie te fera le graph adapté
     

  15. Marie7655

    Date d'inscription
    décembre 2017
    Âge
    28
    Messages
    13

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Merci beaucoup

    J'ai essayé avec cette formule :

    Code:
    series<-c("jour","mois","an"); ajust<-c(0,1,2,3)
    Graphpluies<-function(series,ajust=0){
    if(series=="jour"){plot((jour$moyenne.BV~jour$t),xlab="Les jour entre 1950 et 2004",ylab="PLuviométrie",
                       main="Pluies journalières de 1950 à 2004 (Paris)",type="l",col="blue",lwd=0,5)}
    if(series=="mois"){plot((mois$V2~mois$V1),xlab="Les mois entre 1770 et 2004",ylab="Pluviométrie",
                       main="Pluies mensuelles de 1770 à 2004 (Paris)",type="l",col="pink",lwd=1)}
    if(series=="an"){plot((an$V2~an$V1),xlab="Année entre 1873 et 2004",ylab="Pluviométrie",
                       main="Pluies annuelles de 1873 à 2004 (Paris)",type="l",col="purple",lwd=2)} 
    if(ajust==2){
      x2<-list(jour$t^2,mois$V1^2,an$V2^2)
      model<-lm[jour$moyenne.BV~jour$t,mois$V2~mois$V1,an$V2~an$V1]
      lines([jour$t,mois$V1,an$V1]~model$fitted.values,col="red",lwd=2)}
      }
    Mais R me renvoie :

    Code:
    Error: unexpected '[' in:
    "        model<-lm[jour$moyenne.BV~jour$t,mois$V2~mois$V1,an$V2~an$V1]
            lines(["
    > }
    Error: unexpected '}' in "}"
    Je suis complètement perdue, j'ai beau lire des livres et chercher sur internet je suis bloquée... J'ai 3 fichiers alors je ne peux pas utiliser les crochets pour lui spécifier les colonnes d'un même tableau par exemple... de telle colonne à telle colonne tu fais la même chose si je te le demande...
    Merci beaucoup pour vos réponses
    Dernière modification par JPL ; 14/12/2017 à 19h54. Motif: Ajout de la balise Code (#) pour garder l'indentation
     


    • Publicité







Sur le même thème :


    301 Moved Permanently

    301 Moved Permanently


    nginx/1.2.1



 

Discussions similaires

  1. Besoin d'aide pour trouver sujet de TPE (Assez urgent)
    Par Alexandre863 dans le forum Exercices en biologie
    Réponses: 1
    Dernier message: 16/11/2017, 21h55
  2. Aide pour l'achat d'un premier télescope. C'est assez urgent !
    Par Attempta dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 28
    Dernier message: 24/10/2016, 18h36
  3. Aide programmation Arduino Urgent
    Par Gamekey dans le forum Électronique
    Réponses: 24
    Dernier message: 06/05/2013, 00h23
  4. Besoin d'aide urgent... Programmation en C
    Par Geoffrey93 dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 01/10/2012, 10h28
  5. urgent aide merci programmation linéaire à 2 variables!
    Par lovelysab dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 26/01/2009, 20h28