[Rd] Defining a method that behaves like '$'?
Renaud Gaujoux
renaud at mancala.cbio.uct.ac.za
Fri Jul 9 15:10:08 CEST 2010
I do not want to access the slot itself but its content: a:toto would be
a at slot1[['toto']].
The thing is that I would like to have two different methods: '$' (that
I already have) and another one to define, ideally that behaves like '$'.
So in brief:
- a:toto would be for a at slot1[['toto']]
- a$tata would be for a at slot2[['tata']]
But apparently it might not be possible.
--
Renaud Gaujoux
Computational Biology - University of Cape Town
South Africa
On 09/07/2010 14:58, Marc Schwartz wrote:
> You were, in effect, trying to overload the ":" operator, which is of course for defining sequences.
>
> If you are using S4 methods, what is wrong with using the default "@" as the extraction syntax (eg. a at name) to get at slots?
>
> See ?"@" and ?slot
>
> HTH,
>
> Marc Schwartz
>
> On Jul 9, 2010, at 7:49 AM, Renaud Gaujoux wrote:
>
>
>> Alright.
>> Maybe the symbol I chose was not appropriate. I tried ':' to be able to do 'a:name' with 'a' a S4 object.
>> I get the following error:
>> Error in genericForPrimitive(f) :
>> methods may not be defined for primitive function ":" in this version of R
>>
>> Does there exist any symbol that would be suitable for the job?
>> Thanks
>>
>> --
>> Renaud Gaujoux
>> Computational Biology - University of Cape Town
>> South Africa
>>
>>
>> On 09/07/2010 14:29, Duncan Murdoch wrote:
>>
>>> On 09/07/2010 8:18 AM, Renaud Gaujoux wrote:
>>>
>>>> Hi,
>>>>
>>>> is there a way to define a method say '$$' that would behave like '$' and allow calls like 'a$$name'?
>>>>
>>> No, the parser handles a fixed syntax, and that expression is not legal. You could do it with
>>>
>>> a %$$% name
>>>
>>> using the infix operator syntax. (I think the description in the R Language Definition suggests this is not legal, since $$ is not a valid name, but it does currently work and that's unlikely to change.)
>>>
>>> Duncan Murdoch
>>>
>
###
UNIVERSITY OF CAPE TOWN
This e-mail is subject to the UCT ICT policies and e-mail disclaimer published on our website at http://www.uct.ac.za/about/policies/emaildisclaimer/ or obtainable from +27 21 650 4500. This e-mail is intended only for the person(s) to whom it is addressed. If the e-mail has reached you in error, please notify the author. If you are not the intended recipient of the e-mail you may not use, disclose, copy, redirect or print the content. If this e-mail is not related to the business of UCT it is sent by the sender in the sender's individual capacity.
###
More information about the R-devel
mailing list