87 Stimmen

R: Was sind Spielautomaten?

Weiß jemand, was ein Slot in R ist?

Ich habe keine Erklärung für seine Bedeutung gefunden. Ich erhalte eine rekursive Definition: "Slot-Funktion liefert oder setzt Informationen über die einzelnen Slots eines Objekts"

Für Hilfe wären wir dankbar, Dank - Allee

0 Stimmen

Das steht in der Hilfe zum slot() Funktion - sie soll nicht dokumentieren, was ein Steckplatz ist, sondern nur, wie man auf ihn zugreift.

100voto

Joris Meys Punkte 102836

Steckplätze sind mit S4-Objekten verbunden. Ein Slot kann als ein Teil, ein Element oder eine "Eigenschaft" eines Objekts betrachtet werden. Angenommen, Sie haben ein Auto-Objekt, dann können Sie die Slots "Preis", "Anzahl der Türen", "Motortyp", "Kilometerstand" haben.

Intern wird das eine Liste dargestellt. Ein Beispiel:

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

Hier sind price, numberDoors, typeEngine und mileage Slots der S4-Klasse "Car". Dies ist ein triviales Beispiel, in Wirklichkeit können Slots selbst wieder komplexe Objekte sein.

Der Zugang zu den Spielautomaten kann auf verschiedene Weise erfolgen:

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

oder durch die Konstruktion einer speziellen Methode (siehe zusätzliche Dokumentation).

Weitere Informationen zur S4-Programmierung finden Sie unter diese Frage . Wenn das Konzept für Sie noch vage klingt, könnte eine allgemeine Einführung in die objektorientierte Programmierung helfen.

PS: Beachten Sie den Unterschied zwischen Datenrahmen und Listen, wo Sie $ um auf benannte Variablen/Elemente zuzugreifen.

4 Stimmen

+1 schöne Antwort Joris. Du solltest vielleicht ein Beispiel hinzufügen für slot(aCar, "price") nur als eine weitere Verwendung, insbesondere da der Betreiber auf die slot() Funktion

0 Stimmen

Danke, Ihre Antwort war sehr hilfreich!!

10 Stimmen

Und um alle Slots einer Klasse zu erhalten, gibt es getSlots() o slotNames() für ihre Namen.

25voto

tim Punkte 3264

Genauso wie names(variable) listet alle $ -zugänglichen Namen einer komplexen Variablen, so auch

slotNames(object) listet alle Slots eines Objekts auf.

Sehr praktisch, um herauszufinden, welche Leckerbissen Ihr Passform-Objekt enthält, die Sie sich ansehen können.

14voto

Gavin Simpson Punkte 163780

Zusätzlich zu den Quellen, auf die @Joris Sie hinweist, und seiner eigenen Antwort, lesen Sie bitte ?Classes die auf den Steckplätzen Folgendes umfasst:

 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.
      ....

0 Stimmen

Der Teil über die Nicht-Positionalität scheint besonders hilfreich zu sein, wenn man es mit einer benannten Liste vergleicht.

4voto

Max Punkte 1007

Keine Ahnung, warum R alles umdefinieren muss. Die meisten normalen Programmiersprachen nennen sie "Eigenschaften" oder "Attribute".

1 Stimmen

Dies ist eine legitime Bemerkung. Geben wir zu, dass R voll von skurrilen Designentscheidungen ist.

1 Stimmen

Ich kann eine seltsame Terminologie für Funktionen verstehen, die aus den 70er Jahren stammen, aber Slots gehören nicht dazu, sie wurden erst hinzugefügt, als die meisten OO-Sprachen schon Dutzende von Jahren hinter sich hatten.

0 Stimmen

Damit sich die Wissenschaftler den Ingenieuren gegenüber auch einmal überlegen fühlen können :D

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X