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 :

boucle sur vecteur


Sujet :

R

  1. #1
    Membre à l'essai
    boucle sur vecteur
    Bonjour tout le monde,

    je viens vous voir car j'aimerais réaliser une boucle for sur un vecteur , je m'explique
    - voila mon vecteur : vec<-c(3,6,5)
    j'aimerais faire une boucle permettant de réaliser les actions suivantes : 3- 6 , puis 6-5 , etc
    soustraire la valeur i par la valeur i + 1

    j'ai tenté ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    vec<-c(3,6,5)
     
    rep<-function(x) for(i in length(vec)) return(c[x]-c[x+1])


    mais ca ne fonctionne pas ..
    par avance merci !

  2. #2
    Membre confirmé
    Bonjour,

    ce genre de choses peut se faire en une fois dans R sans passer par des boucles qui seraient très gourmandes en temps.
    On dit qu'on vectorise les calculs.
    Ici il suffit juste de récupérer les valeurs - la dernière et de soustraire à ce vecteur de données toutes les valeurs sauf la première : vec[-length(vec)]-vec[-1]
    cdlt

  3. #3
    Membre à l'essai
    la consigne de l'exercice en cours était de le faire avec une boucle (sachant que c'est plus long sur R) , pourrais tu m'aider ?

    faire une fonction avec boucle permettant l'instruction (x,y,z) => donne y-x , z-y , etc ...

  4. #4
    Membre confirmé
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    res <- numeric(length(vec)-1)
    for (i in 1:length(res)) res[i] <- vec[i]-vec[i+1]
    cdlt

  5. #5
    Membre à l'essai
    merci beaucoup ca fonctionne, j'ai une dernière question que je me permets de te poser ici du coup.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    sample<-c(1:length(d$argent))
    for(i in 1:length(d$argent)){if(d$argent[1:20]){sample[i]=mean(d$argent[1:20])}}


    j'ai une base de données, j'aimerais que le 1er élément de sample soit la moyenne des elements de la 1 ere à 20ème valeur de d$argent , puis la 2ème valeur par exemple soit la moyenne des elements de d$argent pour les valeurs de 21 à 30
    J'ai testé mon code pour 1 a 20 il me renvoit "they were 50 or more warnings (use warnings() to see the first 50)"

    merci encore

###raw>template_hook.ano_emploi###