86 votes

R: ce sont des machines à sous?

Personne ne sait ce qui est une fente dans la R?

Je n'ai pas trouvé l'explication de sa signification. Je reçois une définition récursive: "Logement de fonction retourne ou un ensemble d'informations sur les différents emplacements d'objets"

De l'aide serait appréciée Merci Ruelle

97voto

Joris Meys Points 38980

Les fentes sont liés à S4 objets. Un logement peut être considéré comme une partie ou un élément de la "propriété" d'un objet. Disons que vous avez un objet voiture, alors vous pouvez avoir le logements "prix", "nombre de portes", "type de moteur", "kilométrage".

En interne, c'est représentée une liste. Un exemple :

setClass("Car",representation=representation(
   price = "numeric",
   numberDoors="numeric",
   typeEngine="character",
   mileage="numeric"
))
aCar <- new("Car",price=20000,numberDoors=4,typeEngine="V6",mileage=143)

> aCar
An object of class "Car"
Slot "price":
[1] 20000

Slot "numberDoors":
[1] 4

Slot "typeEngine":
[1] "V6"

Slot "mileage":
[1] 143

Ici, les prix, la numberDoors, typeEngine et le kilométrage sont des machines à sous de la S4 de la classe "Voiture". C'est un exemple trivial, en réalité, des fentes peuvent eux-mêmes être de nouveau les objets complexes.

Les fentes peuvent être accessibles dans de nombreuses façons :

> aCar@price
[1] 20000
> slot(aCar,"typeEngine")
[1] "V6"    

ou par le biais de la construction d'une méthode spécifique (voir la documentation supplémentaire).

Pour en savoir plus sur S4 programmation de voir cette question. Si le concept semble encore vague pour vous, une introduction générale à la Programmation Orientée Objet susceptible de l'aider.

PS: l'Esprit la différence avec dataframes et des listes, où vous utilisez $ pour accéder à des variables nommées/éléments.

24voto

tim Points 543

Tout comme names(variable) listes de tous les $-les noms d'accessibilité d'une variable complexe, donc trop

slotNames(object) la liste de tous les emplacements d'un objet.

Très pratique pour découvrir ce goodies votre fit-objet contient pour votre plaisir de visionnement.

14voto

Gavin Simpson Points 72349

En plus des ressources @Joris points que vous, en plus de sa propre réponse, essayez de lire ?Classes, qui comprend les éléments suivants sur les machines à sous:

 Slots:

      The data contained in an object from an S4 class is defined
      by the _slots_ in the class definition.

      Each slot in an object is a component of the object; like
      components (that is, elements) of a list, these may be
      extracted and set, using the function ‘slot()' or more often
      the operator ‘"@"'.  However, they differ from list
      components in important ways.  First, slots can only be
      referred to by name, not by position, and there is no partial
      matching of names as with list elements.
      ....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X