A (Not So) Short Introduction to S4

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

jean-francois perreton
Messages : 8
Enregistré le : 11 Aoû 2008, 14:53

drop

Messagepar jean-francois perreton » 25 Aoû 2008, 23:11

p 37

l'argument drop permet de garder la structure de donnees actuelle et d'eviter une conversion automatique en une structure plus simple.

Par example, si tu selectionnes une colonne sur une matrice: par defaut c'est un vecteur mais tu peux avoir envie de garder une matrice a une colonne a la place (par exemple parce que tu veux utiliser apply plus tard).

M <- matrix(NA, 2, 2)

M[, 1] # column c(NA, NA)
M[, 1, drop = FALSE # matrix(NA, 2, 1)

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Messagepar Christophe Genolini » 26 Aoû 2008, 14:46

Merci de ton aide.

Je connaissais le comportement de drop pour les matrices. Mes interrogations portaient plus sur l'utilisation de drop dans la redéfinition de l'opérateur [ . En fait, drop pour [ est une généralisation du drop pour matrice, c'est simplement une variable que l'on peut utiliser pour contrôler le type de sorti. Si un objet M contenait un champ "toto" de type matrice 3D (un array) par exemple, il serait possible de définir drop comme un integer pouvant prendre les valeurs 0, 1, 2 et 3 :


    - M["toto",c(5,4,6),0] serait l'élément de la 5ieme ligne, 4ieme colonne, profondeur 6 considéré comme un nombre ;
    - M["toto",c(5,4,6),1] serait l'élément de la 5ieme ligne, 4ieme colonne, profondeur 6 considéré comme un vecteur ;
    - M["toto",c(5,4,6),2] serait l'élément de la 5ieme ligne, 4ieme colonne, profondeur 6 considéré comme une matrice 2D ;
    - M["toto",c(5,4,6),3] serait l'élément de la 5ieme ligne, 4ieme colonne, profondeur 6 considéré comme une matrice 3D.

Je dis ca mais je n'ai pas encore vérifié...

Christophe[/list]

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 01 Sep 2008, 20:55

Me revoilà,

Si j'ai bien compris c'est avec les "méthodes" qu'on peut se créer, par exemple, un plot() personnalisé à un objet, ou un summary(). Je m'étais posé ce genre de questions : http://forums.cirad.fr/logiciel-R/viewtopic.php?t=1309&highlight=. C'est une possibilité que je trouve fort intéressante. Ayant déjà envisagé de faire un package (peut-être sera-t-il fait un jour) , je me disais que j'avais besoin de cela.

Tout ça pour dire que si on pouvait voir cela quelque part dans l'intro de ton document, ce serait parlant pour un utilisateur de base de R, et cela lui fournirait une source de motivation non négligeable pour s'aventurer dans lla suite.

Personnellement, si je fais un package un jour, rien que pour ça je le ferai en S4.

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Messagepar Christophe Genolini » 01 Sep 2008, 21:09

Code : Tout sélectionner

un plot() personnalisé à un objet, ou un summary().

Exactement. C'est ca qui est super, l'utilisateur ne sait pas que les numerics et les zoo ont été programmé par deux personnes différentes. A la limite, il pourrait meme ne pas connaitre le type de sa variable A. Seule chose qui compte vraiment : summary(A) lui donnera un résumé de A.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité