How to access the slots of an S4 object in R
Asked Answered
N

2

40

I'm working with wavelets on a program and I'm used the package wavelets to create the DWT of a time series using the function dwt. This function returns an object of class dwt, which is a S4 object with many slots: W, V, levels, filter, and so on.

How can I access the W's as a vector?

Nail answered 27/10, 2012 at 11:31 Comment(2)
how can i find the names of the slots tho?Regalado
@Regalado You can use slotNames. Also note that you can visit the R Public chat room if you have any clarificationsDiametral
M
45

@ will let you access the slots of an S4 object.

So if your object is called wave, then wave@W should get you your vector.

Note that often the best way to do this is to not access the slot directly but rather through an accessor function (e.g. coefs() rather than digging out the coefficients with $ or @). However, often such functions do not exist so you have to access the slots directly. This will mean that your code breaks if the internal implementation changes, however.

Malleus answered 27/10, 2012 at 12:56 Comment(1)
There is also the function slot(x,name)Bellaude
C
2

Ari B. Friedman's answer is good.

But please keep in mind that using @ to access the slots of an S4 object may not be a good practice. See the discuss here: Is it bad practice to access S4 objects slots directly using @?

Carrick answered 14/5, 2020 at 15:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.