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 :

Une simplification pour ce code ?


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Une simplification pour ce code ?
    Bonjour,

    J'écris en ce moment des lignes de code et je me dois, assez souvent, de le relancer. Et l'une des parties de celui - ci prend un certain temps à s'exécuter. Y aurait - il moyen de le simplifier de façon à ce qu'il ne prenne pas autant de temps (25 - 30 minutes) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (i in 1:nrow(data)) 
    {
    data[i,"x1"] = sum(data[i,c("a1", "a2", ... "a12")])
    data[i,"x2"] = sum(data[i,c("b1", "b2", ... "b9")])
    data[i,"x3"] = sum(data[i,c("c1", "c2", ... "c7")])
    data[i,"x4"] = sum(data[i,c("d1", "d2", ... "d15")])
    data[i,"x5"] = sum(data[i,c("e1", "e2", ... "e8")])
    data[i,"x6"] = sum(data[i,c("f1", "f2", ... "f11")])
    data[i,"x7"] = sum(data[i,c("g1", "g2", ... "g10")])
    data[i,"x8"] = sum(data[i,c("h1", "h2", ... "h10")])
    data[i,"x9"] = sum(data[i,c("i1", "i2", ... "i13")])
    }

    iGaia.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Salut,

    R étant un langage vectoriel, il faut éviter autant que possible de faire des boucles surtout quand il s'agit de faire des assignations comme ici.


    Ceci devrait beaucoup booster la vitesse du script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    data[,"x1"]<-apply(1,data[,c("a1", "a2", ... "a12")],sum)
    data[,"x2"]<-apply(1,data[,c("b1", "b2", ... "b9")],sum)
    #etc..

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour cette information. J'y penserais et essayerais à l'avenir de penser à cette fonction apply assez utile en soi.
    Juste un souci lors de l'exécution de mon code, j'obtiens ce message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in apply(1, data[, c("a1", "a2", "a3",  : 
      dim(X) must have a positive length
    Par curiosité, j'ai essayé de modifier le 1 par ma table mais un message d'erreur est toujours présent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error in ds[-MARGIN] : invalid subscript type 'list'

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Petite erreur dans ton code.

    Les données et le nombre d'attribution aux lignes ou colonnes sont juste inversés.
    Ce qui donne simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data[,"x1"]<-apply(data[, ..], 1, sum)
    data[,"x2"]<-apply(data[, ..], 1, sum)
    #etc..

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

Discussions similaires

  1. Une aide pour un code !
    Par iVarlix dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/05/2014, 20h20
  2. utiliser une variable pour simplifier code
    Par bil_home dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 01/07/2009, 16h54
  3. Recherche d'une extension pour afficher du code Java
    Par Elmilouse dans le forum Mise en forme
    Réponses: 2
    Dernier message: 28/05/2006, 09h08
  4. [VBA-E] Aide pour simplification de mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 11h34
  5. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

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