web-dev-qa-db-ja.com

R:スロットとは何ですか?

誰がRのスロットが何であるか知っていますか?

その意味の説明が見つかりませんでした。再帰的な定義を取得します:「スロット関数は、オブジェクトの個々のスロットに関する情報を返すか設定します」

ヘルプ、感謝します-路地

74
user573347

スロットはS4オブジェクトにリンクされています。スロットは、オブジェクトの一部、要素、または「プロパティ」として見ることができます。車のオブジェクトがあるとすると、スロットには「価格」、「ドアの数」、「エンジンの種類」、「燃費」を設定できます。

内部的には、それはリストを表します。例 :

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

ここで、price、numberDoors、typeEngine、mileageは、S4クラス「Car」のスロットです。これは些細な例であり、実際にはスロット自体が再び複雑なオブジェクトになる可能性があります。

スロットにはさまざまな方法でアクセスできます。

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

または特定のメソッドの構築を通じて(追加のドキュメントを参照)。

S4プログラミングの詳細については、 この質問 を参照してください。それでも概念があいまいに聞こえる場合は、オブジェクト指向プログラミングの一般的な紹介が役立ちます。

PS:名前付き変数/要素にアクセスするために$を使用するデータフレームとリストとの違いに注意してください。

79
Joris Meys

names(variable)が複雑な変数の_$_でアクセス可能なすべての名前をリストするように、

slotNames(object)は、オブジェクトのすべてのスロットをリストします。

表示オブジェクトにフィットオブジェクトに含まれるグッズを見つけるのに非常に便利です。

16
tim

@Jorisが指し示すリソースに加えて、彼自身の答えに加えて、?Classes。スロットには次のものが含まれます。

 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.
      ....
10
Gavin Simpson

Rがすべてを再定義しなければならない理由はわかりません。ほとんどの通常のプログラミング言語は、それらを「プロパティ」または「属性」と呼びます。

0
Max