a@nameRef$name = "ABC" > a@-6ren">
gpt4 book ai didi

r - S4对象之间如何指向?

转载 作者:行者123 更新时间:2023-12-04 10:08:53 25 4
gpt4 key购买 nike

如何改变下面的行为,使对象b和c中的槽名指向同一个对象a?

A<-setClass(Class = "A",
slot = c(name = "character"
)
)
B<-setClass(Class = "B",
slot=c(name = "A"
)
)


a<-A(name="abc")
b<-B(name=a)
c<-B(name=a)

b@name@name="ABC"
b@name@name==c@name@name

最佳答案

S4 类具有标准的 R 写时复制语义,这意味着更新对象没有副作用。对于您想要的语义类型,请使用 ?ReferenceClasses

中描述的引用类
NameRef <- setRefClass("NameRef", fields=c(name="character"))
A <- setClass("A", slots=c(nameRef="NameRef"))

然后

> a = b = A(nameRef=NameRef(name="abc"))
> a@nameRef$name = "ABC"
> a@nameRef$name == b@nameRef$name
[1] TRUE

引用行为会让您的 R 用户感到惊讶,无论它在其他编程环境中多么熟悉,因此请谨慎使用。

关于r - S4对象之间如何指向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631010/

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