クラス Employee が他のクラス Person から継承する 2 つの S4 クラスを作成しています。
両方のクラスの定義は次のとおりです。
setClass("Person", slots = list(name="character", age="numeric"))
setClass("Employee", slots = list(boss="Person"))
これら 2 つのクラスのそれぞれにインスタンスを 1 つずつ作成しています。
alice <- new("Person", name="Alice", age = 40)
これはうまくいきますが、次を使用して Employee のインスタンスを作成しようとすると:
john <- new("Employee", name = "John", age = 20, boss= alice)
以下のようなエラーが表示されます。
Error in initialize(value, ...) :
invalid names for slots of class “Employee”: name, age
この方法でオブジェクトを作成することはできませんか?
nrusselのコメントごと:
contains
関数の引数はsetClass
継承を扱います。クラスEmployee
をクラスから継承する必要がありますPerson
(つまり、従業員は特殊なタイプの人です)。そう
setClass("Person", slots = list(name="character", age="numeric"))
setClass("Employee", slots = list(boss="Person"), contains = "Person")
トリックを行います。
> alice <- new("Person", name="Alice", age = 40)
> john <- new("Employee", name = "John", age = 20, boss= alice)
> john
An object of class "Employee"
Slot "boss":
An object of class "Person"
Slot "name":
[1] "Alice"
Slot "age":
[1] 40
Slot "name":
[1] "John"
Slot "age":
[1] 20
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加