如何在 R 中访问 S4 对象的插槽

Posted

技术标签:

【中文标题】如何在 R 中访问 S4 对象的插槽【英文标题】:How to access the slots of an S4 object in R 【发布时间】:2012-10-17 11:28:06 【问题描述】:

我正在处理程序中的小波,我使用包wavelets 使用函数dwt 创建时间序列的DWT。这个函数返回一个dwt类的对象,它是一个有很多槽的S4对象:WVlevelsfilter等等。

我如何将W 作为向量访问?

【问题讨论】:

我怎样才能找到插槽的名称? @shigeta 你可以使用slotNames。另请注意,如果您有任何澄清,可以访问R Public chat room 【参考方案1】:

Ari B. Friedman 的回答很好。

但请记住,使用@ 访问 S4 对象的插槽可能不是一个好习惯。请参阅此处的讨论:Is it bad practice to access S4 objects slots directly using @?

【讨论】:

【参考方案2】:

@ 将允许您访问 S4 对象的插槽。

所以如果你的对象被称为wave,那么wave@W 应该会得到你的向量。

请注意,通常最好的方法是不直接访问插槽,而是通过访问器函数(例如 coefs() 而不是使用 $@ 挖掘系数)。但是,通常此类功能不存在,因此您必须直接访问插槽。然而,这意味着your code breaks if the internal implementation changes。

【讨论】:

还有函数slot(x,name)

以上是关于如何在 R 中访问 S4 对象的插槽的主要内容,如果未能解决你的问题,请参考以下文章

R语言基于S4的面向对象编程

如何实现对象内部插槽属性

如何在插槽中访问子组件的反应数据?

如何访问创建的钩子中的插槽道具?

如何在 QT 中的另一个插槽中使用插槽中的变量

从 ctree 对象中提取预测变量