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



+ Répondre à la discussion
Affichage des résultats 1 à 27 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 à 01h18. Motif: Ajout de la balise Code (#) pour garder l'indentation
     


    • Publicité



  2. minushabens

    Date d'inscription
    juillet 2014
    Messages
    6 066

    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 613

    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 à 01h19. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  7. minushabens

    Date d'inscription
    juillet 2014
    Messages
    6 066

    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
    6 066

    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 à 17h26. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  11. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 613

    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 613

    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 613

    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 à 18h54. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  16. minushabens

    Date d'inscription
    juillet 2014
    Messages
    6 066

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    le message d'erreur ( unexpected [ ) est pourtant clair: les arguments d'une fonction doivent être entre parenthèses, pas entre crochets. Je m'étonne que tu n'aies pas déjà découvert cela.
     

  17. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 613

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Au dela de l'erreur que minushabens t'a expliqué, j'en conclue que tu n'as absolument pas pris en compte mes 3 derniers messages et ce que je t'ai dit sur ton code concernant le fait de comparer un élément a un vecteur, ou de mettre tes données en argument...

    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.
    justement, c'est bien parce que tu as 3 fichiers que tu peux faire comme ca, (en ne changeant pas les colonnes dans les crochets justement) il te suffit de changer le nom du fichier sans rien changer d'autre au code et il te passera du plot d'un fichier au plot d'un autre fichier
    Dernière modification par Loupsio ; 15/12/2017 à 09h03.
     

  18. minushabens

    Date d'inscription
    juillet 2014
    Messages
    6 066

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Citation Envoyé par Marie7655 Voir le message
    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...
    si je puis me permettre: tu prends le problème par le mauvais bout. Je te conseille de commencer par écrire une fonction qui trace correctement la figure que tu veux pour UNE des variables. Après tu verras comment faire en sorte que la figure utilise l'une ou l'autre variable. Sous R (mais c'est assez général en programmation) il faut construire les choses en assemblant des petits blocs qui font chacun une tâche simple.
     

  19. Marie7655

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

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Bonjour à vous,

    Merci infiniment de votre aide, grâce à vous je progresse... Je m'excuse de ne pas avoir compris du premier coup vos explications pourtant très précises mais je débute et ai encore un peu de mal.

    J'ai bien relu vos conseils et j'ai réussi :

    Code:
    Graphpluies<-function(x,y,ajust=0){
        
      plot(x,y,type="l",col=c("pink","yellow","purple"))
    
      if (ajust==1) {model<-lm(y~x)
                     abline(model,col="red",lwd=2)
        
      }
    }
    Cependant, j'aimerai qu'il puisse m'afficher une couleur différente pour chaque variable et un titre différent aussi... Je sais qu'il y a une possibilité de le faire mais ce ne doit pas être avec c()

    Pourriez vous éclairer encore un peu ma lanterne ?
    Je vous remercie beaucoup
    Dernière modification par JPL ; 15/12/2017 à 15h47. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  20. Marie7655

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

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Ohlala nouvelle question assez complexe aussi , je désire créer une courbe cumulative d'une série au choix en utilisant une boucle while.
    J'ai essayé ceci :
    x<-an[,2]
    y<-an[1,2]
    while(i<=415.4167){
    y[i]<-y[i-1]+x[i]
    i<-i+1
    }

    En fait an est mon fichier par exemple. Je désire implémenter à chaque fois pour créer une courbe cumulative, j'ai bien conscience que mon +1 ne sert strictement à rien car là je suis dans des valeurs précises de cases en cases...
    Puis pour afficher ma courbe, il faut créer également un plot et un lines ?

    Merci à vous si vous pouvez m'éclairer un peu...
     

  21. Marie7655

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

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Au fait, pardon j'ai omis de préciser que 415.4167 correspond au maximum de y (la variable de l'objet an) que j'ai obtenu en faisant max(an[,2])
     

  22. Marie7655

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

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    R me renvoie ceci
    Warning message:
    In while (i <= 415.4167) { :
    the condition has length > 1 and only the first element will be used
     

  23. Marie7655

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

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Pour revenir aux courbe de tendance linéaire (ajust=1), quadratique (ajust=2) et cubique (ajust=3) j'entre ceci, cela m'affiche le premier ajustement. Mais pour ajust 1 et 2, il m'affiche le plot mais sans rien... Je précise que x et y sont des variables que j'entre dans ma fonction Graphpluie(x,y,ajust=)

    Code:
    Graphpluies<-function(x,y,ajust=0){
      plot(x,y,type="l",col=rainbow(3))
      if (ajust==1) {
          model<-lm(y~x)
          lines(x,model$fitted.values,col="yellow",lwd=2)
      if(ajust==2){
          model2<-lm(y~x+x^2)
          lines(x,model2$fitted.values,col="blue",lwd=2)
      if(ajust==3){
         model3<-lm(y~x+x^2+x^3)
        lines(x,model3$fitted.values,col="green",lwd=2)
      }
      }
      }
      }
    Dernière modification par JPL ; 15/12/2017 à 17h47. Motif: Ajout de la balise Code (#) pour garder l'indentation
     

  24. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 613

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Procédons par étape:
    j'aimerai qu'il puisse m'afficher une couleur différente pour chaque variable
    Code:
    Graphpluies<-function(x,y,ajust=0,couleur){
    plot(x,y,col=couleur)
    if(ajust==1){
    model<-lm(y~x)
    abline(model,col=couleur, lwd=2)}
    }
    
    choix="an" 
    if choix=="an":
      couleur="black"
    else if choix == "mois":
      couleur="blue"
    else if choix =="jour":
      couleur=="red"
    ajustement=1
    fichieraouvrir=paste(choix,'.csv')
    fichier=read.table(fichieraouvrir,sep=";",dec=",",header=T)
    Graphpluies(fichier[,1],fichier[,2],ajustement,couleur)
    en rouge c'est la seule chose a parametrer manuellement avant de lancer le programme
    , j'aimerai qu'il puisse m'afficher [...] un titre différent aussi.
    si tes fichiers sont assez organisés et similaires les uns aux autres (fichiers biens nommés, colonnes avec des noms représentatif et les memes d'un fichier à l'autre...) tu peux utiliser le nom du fichier lui meme pour nommer le titre
    Code:
    Graphpluies<-function(x,y,ajust=0,couleur){
    
    plot(x,y,col=couleur,main=paste("représentation de la pluie par",choix))
    if(ajust==1){
    model<-lm(y~x)
    abline(model,col=couleur, lwd=2)}
    }
    
    choix<<-"an" 
    if choix=="an":
      couleur="black"
    else if choix == "mois":
      couleur="blue"
    else if choix =="jour":
      couleur=="red"
    ajustement=1
    fichieraouvrir=paste(choix,'.csv')
    fichier=read.table(fichieraouvrir,sep=";",dec=",",header=T)
    Graphpluies(fichier[,1],fichier[,2],ajustement,couleur)
    A chaque fois en orange c'est la partie de code d'intéret (le nouveau truc ou le truc important)
    on notera le " <<- " qui change du " <- " ou du " = " d'assignation et qui correspond a une variable globale (d'habitude si tu as une variable " i " en dehors de la fonction et une variable " i " dans la fonction, ce sont deux variables différentes malgré qu'elles aient lemême nom, et n'interfererons pas, en passant une variable en variable globale, cette variable est la meme chose en dehors et de la fonction qu'a l'interieur)

    sinon tu peux utiliser un if tel que
    Code:
    if choix=="an":
    titre<<-"patati patata"
    else if :
    ...
    et dans ton plot mettre
    Code:
    plot(x,y,main=titre)

    Ohlala nouvelle question assez complexe aussi , je désire créer une courbe cumulative d'une série au choix en utilisant une boucle while.
    J'ai essayé ceci :
    Code:
    x<-an[,2]
    y<-an[1,2]
    while(i<=415.4167){
    y[i]<-y[i-1]+x[i]
    i<-i+1
    }
    R me renvoie ceci
    Warning message:
    In while (i <= 415.4167) { :
    the condition has length > 1 and only the first element will be used
    cela veut dire que "i" est aussi un vecteur, tu as du faire un :
    Code:
    i=c(.... , ... )
    Il faut bien que tu comprenne que les vecteurs ( "machin=c()" ) que en langage humain, ce sont des listes (bien qu'une liste dans R ca soit encore autre chose) dans un vecteur tu liste différentes valeurs, là "i" n'a aucune raison d'etre un vecteur, tout comme "series" précédemment, tu ne doit pas faire des vecteurs a tout bout de champs, c'est un élément très utile de R mais il faut l'utiliser lorsque c'est approprié

    PS : comme tu peux le remarquer sous chacun de tes messages, quand tu écris du code, (en langage R) il faut mettre la balise code, ca permet de mieux visualiser les fragments de code, mais aussi de conserver l'indentation,
    jusqu'à là JPL est repassé derrière toi pour le faire à ta place à chaque fois, mais je doute qu'il ait la patience de corriger chacun de tes messages
    penses y la prochaine fois quand tu écris du code dans l'une de tes réponses
    Dernière modification par Loupsio ; 15/12/2017 à 17h42.
     

  25. Loupsio

    Date d'inscription
    novembre 2011
    Localisation
    Rouen
    Messages
    1 613

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    j'ai oublié, de préciser
    Code:
    lm()
    l'accronyme "lm" signifie "linear model" et donc en francais "modèle linéaire", pour cela que ca marche bien pour le adjust=1 qui est du linéaire mais pas pour les autres, 4pour les autres utilises plutot "lines()"
     

  26. JPL

    Date d'inscription
    septembre 2003
    Messages
    69 148

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    Marie tu es priée d’utiliser la balise Quote comme demandé ici : Règles participatives pour ce forum.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
     

  27. minushabens

    Date d'inscription
    juillet 2014
    Messages
    6 066

    Re : Aide Logiciel R - Programmation (ASSEZ URGENT)

    je ne suis pas sûr d'avoir compris pour la courbe cumulative, mais il y a la fonction cumsum qui répond peut-être à la question.
     


    • Publicité







Sur le même thème :





 

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, 20h55
  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, 17h36
  3. Aide programmation Arduino Urgent
    Par Gamekey dans le forum Électronique
    Réponses: 24
    Dernier message: 05/05/2013, 23h23
  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, 09h28
  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, 19h28