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 :

mise en array recalcitrante


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut mise en array recalcitrante
    # Soient deux objets 1 et 2 constitués de trois points chacun, avec chaque point defini par deux coordonnées x,y
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > objets
       x1 y1 x2 y2 x3 y3
    1  1  2  3  4  5  6
    2  7  8  9 10 11 12
    # Ces objets se trouvent dans une matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > objets <-as.matrix(objets)
    > objets
         V1 V2 V3 V4 V5 V6
    [1,]  1  2  3  4  5  6
    [2,]  7  8  9 10 11 12
    # On peut donc, par exemple, transposer la présentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > t(objets)
       [,1] [,2]
    V1    1    7
    V2    2    8
    V3    3    9
    V4    4   10
    V5    5   11
    V6    6   12
    # Je souhaite en faire un "array" comportant les deux matrices, comme par exemple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > la <- array(t(objets), dim=c(2,3,2))
    > la
    , , 1
     
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6
     
    , , 2
     
         [,1] [,2] [,3]
    [1,]    7    9   11
    [2,]    8   10   12
    # Oui, mais je ne trouve pas comment faire pour que l'array me présente les objets de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         [,1] [,2]
    [1,]    1    2
    [2,]    3    4
    [3,]    5    6
         [,1] [,2]
    [1,]    7    8
    [2,]    9   10
    [3,]   11   12
    Attention, il n'est pas correct de répondre par la <- array(t(objets), dim=c(3,2,2)) car les coordonnées ne sont alors plus correctes...


    Un grand merci d'avance,

    khunjpd

  2. #2
    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,

    Effectivement quel casse-tête!

    Voilà qui fait l'affaire :
    Je n'utilise pas beaucoup les objets de type array composés (pourquoi pas une liste d'ailleurs?) du coup c'est un for plutôt qu'un lapply.

    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
    27
     
    #Le tableau de départ
    az <-  data.frame("x1"=c(1,7),"y1"=c(2,8),"x2"=c(3,9),"y2"=c(4,10),"x3"=c(5,11),"y3"=c(6,12))
     
    az <- as.matrix(az) #Passé en matrice
     
    la <- array(t(az), dim=c(2,3,2))#Passé en array
     
    la_bis <- array(0,c(3,2,2)) #Un nouvel array aux dimensions souhaitées
     
    for(i in 1:dim(la)[3])   la_bis[,,i] <- array(t(la[,,i]))
     
    #Affichage
    > la_bis
    , , 1
     
         [,1] [,2]
    [1,]    1    2
    [2,]    3    4
    [3,]    5    6
     
    , , 2
     
         [,1] [,2]
    [1,]    7    8
    [2,]    9   10
    [3,]   11   12


    Bonne journée

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    Citation Envoyé par Guinue Voir le message
    Bonjour,

    Effectivement quel casse-tête!

    Voilà qui fait l'affaire :
    Je n'utilise pas beaucoup les objets de type array composés (pourquoi pas une liste d'ailleurs?) du coup c'est un for plutôt qu'un lapply.

    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
    27
     
    #Le tableau de départ
    az <-  data.frame("x1"=c(1,7),"y1"=c(2,8),"x2"=c(3,9),"y2"=c(4,10),"x3"=c(5,11),"y3"=c(6,12))
     
    az <- as.matrix(az) #Passé en matrice
     
    la <- array(t(az), dim=c(2,3,2))#Passé en array
     
    la_bis <- array(0,c(3,2,2)) #Un nouvel array aux dimensions souhaitées
     
    for(i in 1:dim(la)[3])   la_bis[,,i] <- array(t(la[,,i]))
     
    #Affichage
    > la_bis
    , , 1
     
         [,1] [,2]
    [1,]    1    2
    [2,]    3    4
    [3,]    5    6
     
    , , 2
     
         [,1] [,2]
    [1,]    7    8
    [2,]    9   10
    [3,]   11   12


    Bonne journée
    UN GRAND MERCI !

  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
    UN GRAND MERCI !
    De rien, ravi d'avoir pu aider

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

Discussions similaires

  1. mise à jour d'array dans une fonction
    Par Kassar dans le forum Langage
    Réponses: 3
    Dernier message: 09/11/2008, 16h32
  2. [Sécurité] $_SESSION array + mise à jour
    Par psykbe dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2006, 18h10
  3. Visualisation des mise à jour en réseau
    Par fandor7 dans le forum Paradox
    Réponses: 2
    Dernier message: 06/12/2002, 15h54
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. PB mise en exploitation
    Par DiceChris dans le forum CORBA
    Réponses: 21
    Dernier message: 05/07/2002, 16h05

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