R: co to są automaty?


79

Czy ktoś wie, co to jest automat w R?

Nie znalazłem wyjaśnienia jego znaczenia. Otrzymuję definicję rekurencyjną: „Funkcja Slot zwraca lub ustawia informacje o poszczególnych gniazdach obiektów”

Pomoc byłaby doceniona, Dzięki - Alley


Wynika to z pomocy dotyczącej slot()funkcji - nie ma ona dokumentować, czym jest gniazdo, tylko jak uzyskać do nich dostęp.
Gavin Simpson,

Odpowiedzi:


87

Gniazda są połączone z obiektami S4. Szczelina może być postrzegana jako część, element lub „właściwość” obiektu. Powiedzmy, że masz samochód, wtedy możesz mieć sloty „cena”, „liczba drzwi”, „typ silnika”, „przebieg”.

Wewnętrznie jest to lista. Przykład :

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

Tutaj cena, liczbaDrzwi, typSilnik i przebieg to gniazda klasy S4 „Samochód”. To trywialny przykład, w rzeczywistości same gniazda mogą być ponownie złożonymi obiektami.

Do automatów można uzyskać dostęp na wiele sposobów:

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

lub poprzez budowę określonej metody (patrz dodatkowa dokumentacja).

Więcej informacji na temat programowania S4 można znaleźć w tym pytaniu . Jeśli ta koncepcja nadal brzmi dla ciebie niejasno, pomocne może być ogólne wprowadzenie do programowania obiektowego.

PS: Zwróć uwagę na różnicę w ramkach danych i listach, w których $uzyskujesz dostęp do nazwanych zmiennych / elementów.


3
+1 miła odpowiedź Joris. Może chcesz dodać przykład slot(aCar, "price")tak jak innego wykorzystania, esp jako op patrzył na slot()funkcję
Gavin Simpson

Dzięki, Twoja odpowiedź była bardzo pomocna!
user573347

9
Aby zdobyć wszystkie miejsca w klasie, istnieje getSlots()lub slotNames()dla ich nazw.
Laurent,

18

Podobnie jak names(variable)wyświetla listę wszystkich dostępnych $nazw zmiennej złożonej

slotNames(object) wyświetla wszystkie szczeliny obiektu.

Bardzo przydatne, aby dowiedzieć się, jakie gadżety zawiera Twój fit-obiekt, abyś mógł oglądać ją.


10

Oprócz zasobów, na które wskazuje @Joris, a także jego własnej odpowiedzi, spróbuj przeczytać ?Classes, który zawiera następujące informacje na temat slotów:

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

1

Nie mam pojęcia, dlaczego R musi wszystko przedefiniować. Większość normalnych języków programowania nazywa je „właściwościami” lub „atrybutami”.


To jest uzasadniony komentarz. Przyznajmy, że R jest pełen dziwacznych wyborów projektowych.
King Crimson

Rozumiem dziwną terminologię dotyczącą funkcji z lat 70., ale automatów do gier nie ma wśród nich, zostały dodane, gdy większość języków OO miała za sobą dziesiątki lat.
Max
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.