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 :

objets avec opérateur @


Sujet :

R

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut objets avec opérateur @
    Bonjour,

    Je rencontre parfois des objets R qui comportent des sous-données, accessibles via l'opérateur @ (arobase).
    Quelqu'un connaîtrait-il une doc pour comprendre ce que sont ces objets et comment savoir ce qu'ils contiennent ?

  2. #2
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Je viens de trouver un élément de réponse.
    Pour savoir ce qu'ils contiennent, il suffit de faire head(Objet).

  3. #3
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut
    Bonjour,

    Sous R il y a deux systèmes d’accession d’objet ou de représentation des données :

    • les classes S3 pour lesquelles on accède aux éléments avec l’opérateur $
    • les classes S4 pour lesquelles on accède aux éléments appelés « slots » avec l’opérateur @


    Vous pouvez utiliser la commande str() qui renvoie la structure de tout objet quelle que soit sa classe :

    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
    > communes <- readShapeSpatial("shp/58-.shp")
    > str(communes)
    Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
      ..@ data       :'data.frame': 312 obs. of  18 variables:
      .. ..$ ID_GEOFLA : int [1:312] 149 166 295 296 300 361 465 466 522 638 ...
      .. ..$ CODE_COMM : Factor w/ 312 levels "001","002","003",..: 237 289 103 55 274 181 97 126 40 266 ...
      .. ..$ INSEE_COM : Factor w/ 312 levels "58001","58002",..: 237 289 103 55 274 181 97 126 40 266 ...
      .. ..$ NOM_COMM  : Factor w/ 312 levels "ACHUN","ALLIGNY-COSNE",..: 236 289 98 53 274 182 92 120 40 264 ...
      .. ..$ STATUT    : Factor w/ 4 levels "Chef-lieu canton",..: 2 2 1 2 2 1 2 2 2 1 ...
      .. ..$ X_CHF_LIEU: int [1:312] 7167 7540 7269 7389 7370 7615 7493 7276 7528 7388 ...
      .. ..$ Y_CHF_LIEU: int [1:312] 66534 66387 66239 66379 66621 66544 66908 66801 66565 66673 ...
      .. ..$ X_CENTROID: int [1:312] 7168 7543 7257 7398 7369 7617 7485 7255 7537 7394 ...
      .. ..$ Y_CENTROID: int [1:312] 66544 66390 66244 66393 66618 66528 66911 66794 66573 66669 ...
      .. ..$ Z_MOYEN   : int [1:312] 201 221 238 217 288 267 187 304 232 303 ...
      .. ..$ SUPERFICIE: int [1:312] 1644 2023 4004 4637 1864 4134 963 2378 1612 2618 ...
      .. ..$ POPULATION: num [1:312] 2 0.1 1.3 0.8 0.3 1.7 0.1 0.2 0.2 0.9 ...
      .. ..$ CODE_CANT : Factor w/ 33 levels "01","02","03",..: 28 11 10 8 22 15 23 18 4 22 ...
      .. ..$ CODE_ARR  : Factor w/ 4 levels "1","2","3","4": 3 1 3 3 3 1 2 4 1 3 ...
      .. ..$ CODE_DEPT : Factor w/ 1 level "58": 1 1 1 1 1 1 1 1 1 1 ...
      .. ..$ NOM_DEPT  : Factor w/ 1 level "NIEVRE": 1 1 1 1 1 1 1 1 1 1 ...
      .. ..$ CODE_REG  : Factor w/ 1 level "26": 1 1 1 1 1 1 1 1 1 1 ...
      .. ..$ NOM_REGION: Factor w/ 1 level "BOURGOGNE": 1 1 1 1 1 1 1 1 1 1 ...
      .. ..- attr(*, "data_types")= chr [1:18] "N" "C" "C" "C" ...
      ..@ polygons   :List of 312
      ...
    Ensuite vous pouvez accéder à tout élément de l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > head(communes@data$NOM_COMM)
    [1] SAINT-ELOI        THAIX             DORNES            CHAMPVERT         SAXI-BOURDON      MOULINS-ENGILBERT
    312 Levels: ACHUN ALLIGNY-COSNE ALLIGNY-EN-MORVAN ALLUY AMAZY ANLEZY ANNAY ANTHIEN ARBOURSE ARLEUF ARMES ARQUIAN ... VITRY-LACHE
    Vous pouvez aussi utiliser la commande slotNames() pour obtenir la liste des slots d'un objet de classe S4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > slotNames(communes)
    [1] "data"        "polygons"    "plotOrder"   "bbox"        "proj4string"
    Cordialement,

  4. #4
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    S3, S4
    Il va vraiment falloir que j'approfondisse ces langages.
    Merci Mgdondon

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 17/07/2010, 15h03
  2. Objet Null avec opérateurs
    Par Nio7667 dans le forum VB.NET
    Réponses: 0
    Dernier message: 15/10/2009, 14h08
  3. Réponses: 10
    Dernier message: 22/09/2008, 10h23
  4. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  5. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22

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