gpt4 book ai didi

r - 如何使一个 S4 类从另一个 S4 类正确继承?

转载 作者:行者123 更新时间:2023-12-05 02:19:27 25 4
gpt4 key购买 nike

我正在创建两个 S4 类,其中 Employee 类继承自另一个 Person 类。

两个类的定义如下:

setClass("Person", slots = list(name="character", age="numeric"))

setClass("Employee", slots = list(boss="Person"))

我正在为这两个类创建一个实例,

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

我不能以这种方式创建对象吗?

最佳答案

Per nrussel 的评论:

函数setClass 的参数contains 处理继承。您希望 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

关于r - 如何使一个 S4 类从另一个 S4 类正确继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42833252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com