[prev in list] [next in list] [prev in thread] [next in thread]
List: r-help
Subject: Re: [R] using S4 objects in "with"?
From: Spencer Graves <spencer.graves () effectivedefense ! org>
Date: 2018-09-26 21:23:17
Message-ID: 243b9ca4-10f9-b331-841b-6d4c69677559 () effectivedefense ! org
[Download RAW message or body]
On 2018-09-26 15:34, Duncan Murdoch wrote:
> On 26/09/2018 4:16 PM, Spencer Graves wrote:
>> Is there anything comparable to "with" for S4 objects?
>>
>>
>> EXAMPLE:
>>
>>
>> A "Wave" object in the tuneR package has slots "left" and
>> "right", plus others. I'd like to be able to do something like the
>> following:
>>
>>
>> library(tuneR)
>> x <- seq(0, 2*pi, length = 6)
>> all.equal(x, rev(x))
>> channel <- round(32000 * sin(440 * x))
>> Wobj <- Wave(left = channel, right=rev(channel))
>>
>> with(Wobj, quantile(left-right))
>>
>>
>> ** This last statement throws "Error ... object 'left' not
>> found".
>>
>>
>> Is there something comparable to "with" that can do this?
>
> I don't know of anything that is "officially sanctioned". A couple of
> ideas:
>
> 1. Slots in S4 are stored in attributes. So
>
> with(attributes(Wobj), quantile(left - right))
>
> works. BUT: as far as I recall, this is an undocumented
> implementation detail, and you aren't supposed to count on it.
>
> 2. You could write an as.list() method for the Wave class, then
>
> with(as.list(Wobj),
>
> would work. This may be the "right" way to do this.
Thanks. I'd prefer to have as.list.default convert every S4
object to a list. And have with(S4_object, ...) interpret it equivalent
to with(as.list(S4_object), ...).
I think I'll do it other ways for the time being.
Best Wishes,
Spencer
>
> Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic