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 :

problème avec rbind, cbind et/ou matrix


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 20
    Par défaut problème avec rbind, cbind et/ou matrix
    Bonjours à vous,

    J'ai un problème que je n'arrive pas à résoudre et c'est un problème récurrent sous R.

    Je m'explique :
    Je voudrais organiser par colonnes mes données sélectionnées par facteurs.
    Le souci c'est que les colonnes n'ont pas le même nombre d'observations, donc à chaque fois que je fais un cbind ou un rbind, R me dit que les arguments n'ont pas la même longueur.

    Et donc comment faire, pour ne pas avoir de réplication?
    Ou comment créer une matrix (avec x,y,z) même si c'est avec des NA pour compléter?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x<-c(1,2,3,4,5,6)
    y<-c(77,88,55,66,99,88,77,44,55,66,33,77,55,66,33,22)
    z<-c(1,3,6,8,7,6,55,66,9)
     
    aa<-rbind(x,y,z)
    Avis dans rbind(x, y, z) :
      number of columns of result is not a multiple of vector length (arg 1)
    Merci d'avance.

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 96
    Par défaut
    Bonjour,
    Je ne pense pas qu'il soit possible d'utiliser les fonctions rbind, cbind, matrix, data.frame avec des arguments de tailles différentes.
    Sinon tu peux faire une liste et si tu souhaites accéder à x par exemple tu fais L$x, le premier élément de x : L$x[1], ainsi de suite.
    Si tu souhaites appliquer une fonction à chaque élément tu peux utiliser les fonctions sapply, lapply ,....

    Bonne continuation.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 20
    Par défaut
    Merci pour le réponse,
    et si j'ai bien compris je suis bel est bien bloqué pour continuer

    car j'ai besoin d'une matrice pour pouvoir faire ça:


    http://addictedtor.free.fr/graphique...y.php?graph=54

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Février 2012
    Messages : 62
    Par défaut
    Bonjour,

    Si le nombre d'objets n'est pas trop important tu peux tenter ça :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    x<-c(1,2,3,4,5,6)
    y<-c(77,88,55,66,99,88,77,44,55,66,33,77,55,66,33,22)
    z<-c(1,3,6,8,7,6,55,66,9)
     
    temp <- c(length(x),length(y),length(z))
    > temp
    [1]  6 16  9
     
    length(x) <- max(temp)
    length(y) <- max(temp)
    length(z) <- max(temp)
     
    > x
     [1]  1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA
    > y
     [1] 77 88 55 66 99 88 77 44 55 66 33 77 55 66 33 22
    > z
     [1]  1  3  6  8  7  6 55 66  9 NA NA NA NA NA NA NA
     
    aa<-rbind(x,y,z)
     
     > aa
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
    x    1    2    3    4    5    6   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
    y   77   88   55   66   99   88   77   44   55    66    33    77    55    66    33    22
    z    1    3    6    8    7    6   55   66    9    NA    NA    NA    NA    NA    NA    NA
    Si il y a beaucoup d'objets, il faudra peut-être faire une fonction qui se charge de les mettre tous à la même longueur que le plus grand. (ce qui ne pose pas de souci tu as vu, en disant que la longueur de x vaut celle de y, si y est plus grand que x, R rajoute des cases dont la valeur est NA.)

    En espérant avoir aidé

    A bientôt

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 20
    Par défaut
    Merci pour la réponse .

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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