2011-01-17 9 views
64

誰もスロットにRが入っていることを知っていますか?R:スロットとは何ですか?

その意味の説明は見つかりませんでした。 路地

+0

これは 'slot()'関数の助けを借りてきたものです。スロットとは何かを文書化するものではなく、アクセスする方法だけです。 –

答えて

66

スロットが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"のスロットです。これはほんの一例ですが、実際にはスロット自体が再び複雑なオブジェクトになる可能性があります。

> [email protected] 
[1] 20000 
> slot(aCar,"typeEngine") 
[1] "V6"  

又は特定方法の構築を介して(追加のドキュメントを参照)

スロットは多数の方法でアクセスすることができます。

S4プログラミングの詳細については、this questionを参照してください。概念があなたにあいまいに聞こえる場合は、オブジェクト指向プログラミングの一般的な導入が役に立ちます。

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

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

+1素敵な答えジョリス。オペレータが 'slot()'関数を見ているときに 'slot(aCar、" price ")'の例を別の使い方と同じように追加したいかもしれません。 –

+0

Gavinがいいでしょう。 –

+0

ありがとうございました。あなたの答えはとても役に立ちました! – user573347

10

は、スロットに以下のものが含ま?Classesを、読んでみてください複雑な変数でもあります。

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

あなたのフィットオブジェクトがあなたの喜びのために含まれているものを発見することは非常に便利です。

15

だけnames(variable)としてリストアップ:あなたがへのリソース@Jorisポイント、プラス自分自身の答えに加えて

関連する問題