---------- Original Message ----------- From: Duncan Temple Lang <[EMAIL PROTECTED]> To: Ulrike Grömping <[EMAIL PROTECTED]> Cc: Uwe Ligges <[EMAIL PROTECTED]>, r-help@stat.math.ethz.ch Sent: Fri, 18 Nov 2005 10:26:51 -0800 Subject: Re: [R] Method for $
> -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Ulrike Grömping wrote: > > Uwe, > > > > thank thank you very much for your suggestion. This does in fact work, if I > > define > > > > "$.myclass"<-function(x,slotname){slot(x,slotname)} > > > > which solves my immediate need. > > > > However, the setMethod version > > setMethod("$", signature(x="myclass"), function(x,slotname){ > > slot(x,slotname) > > } > > ) > > still produces the same error message as before (cf. below). If anyone has > > a > > solution for this, I would appreciate it. > > > > For the record, the problem you are experiencing is that > you are not using the same argument names in your > method as the function "$" uses. Hence there is a mismatch. > Use > setMethod("$", signature(x="myclass"), function(x, name){ > slot(x, name) > } ) > > i.e. rather than slotname as the second argument, use name > as that is what $ uses. Thanks very much for clarifying that. I just wasn't aware of the argument names of $. It's obvious from the help file, once you know what to look for, but ... > > But, as Martin pointed out, this is not an advisable thing > to do. > And if you want to use an S4 class to house sub-elements, > either explicitly specify their types with > setClass('myclass', representation( a = "integer", > b = "matrix", ....) > > or if you want them to be arbitary objects, then think > about why you are using S4. I have in fact used a class definition like the one you suggest, i.e. have switched from a list to a class by defining an object type for each of my list elements. As a consequence, the former list elements were no longer accessible via "$", which is what I want to recover. > > > Uwe, my best wishes also to Dortmund and Lena, and by the way, it's your > > book > > that got me started with understanding (part of) the programming aspects of > > R > > relatively fast. > > > > Regards, > > Ulrike Grömping > > > > ---------- Original Message ----------- > > From: Uwe Ligges <[EMAIL PROTECTED]> > > To: Ulrike Grömping <[EMAIL PROTECTED]> > > Cc: r-help@stat.math.ethz.ch > > Sent: Fri, 18 Nov 2005 17:45:40 +0100 > > Subject: Re: [R] Method for $ > > > > > >>Ulrike Grömping wrote: > >> > >> > >>>Dear R experts, > >>> > >>>I have defined a class "myclass" and would like the slots to be > > > > extractable > > > >>>not only by "@" but also by "$". I now try to write a method for "$" that > >>>simply executes the request [EMAIL PROTECTED], whenever someone calls > >>>object$slotname for any object of class "myclass". > >>>I don't manage to find out how I can provide this function > > > > with "slotname", > > > >>>so that one and the same function works for any arbitrary slotname a user > >>>might choose. > >>> > >>>I have tried > >>> > >>>setMethod("$", signature(x="myclass"), function(x,slotname){ > >>> [EMAIL PROTECTED] > >>> } > >>>) > >> > >>Ulrike, > >> > >>what about (untested!): > >>slot(x, slotname) > >> > >>Best wishes from Dortmund and Lena, > >>Uwe Ligges > >> > >> > >>>This produced the error message: > >>>In method for function "$": expanding the signature to > >>>include omitted arguments in definition: name = "missing" > >>>Error in rematchDefinition(definition, fdef, mnames, fnames, signature) : > >>> methods can add arguments to the generic only if '...' is an > > > > argument > > > >>>to the generic > >>> > >>>My searches for a solution of this problem have not been successful. Can > >>>someone help? > >>> > >>>Thanks and regards, > >>>Ulrike Grömping, Berlin > >>> > >>>______________________________________________ > >>>R-help@stat.math.ethz.ch mailing list > >>>https://stat.ethz.ch/mailman/listinfo/r-help > >>>PLEASE do read the posting guide! http://www.R-project.org/posting- > > > > guide.html > > ------- End of Original Message ------- > > > > ______________________________________________ > > R-help@stat.math.ethz.ch mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide! > > http://www.R-project.org/posting-guide.html > > - -- > Duncan Temple Lang [EMAIL PROTECTED] > Department of Statistics work: (530) 752-4782 > 371 Kerr Hall fax: (530) 752-7099 > One Shields Ave. > University of California at Davis > Davis, CA 95616, USA > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.2 (Darwin) > Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org > > iD8DBQFDfhzr9p/Jzwa2QP4RAnoPAKCAeNsDpbAC52kfJnmaBdLeGPUTgwCfTqBF > Ffg0eMA//XcfzY3kjBqGJ8c= > =iO7y > -----END PGP SIGNATURE----- ------- End of Original Message ------- [[alternative HTML version deleted]]
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html