On Fri, Oct 8, 2010 at 6:19 AM, Sebastian Gibb <li...@sebastiangibb.de> wrote: > Hello Duncan, > > thank for your advice, but it doesn't work like expected: > > setClass(Class="A", representation=representation(slotA="numeric", > slotB="numeric")); > setMethod("$", "A", function(x, name) {return(slot(x, name));}) > setGeneric(".DollarNames") > setMethod(".DollarNames", signature(x="A"), function(x, > pattern)grep(pattern=pattern, x=c("slotA", "slotB"), value=T)) > > a <- new("A", slotA=1, slotB=2) > a$sl <TAB> > # doesn't print slotA/slotB >> a$ > > What I'm doing wrong?
There is a namespace issue with making .DollarNames() generic; basically, the completion code in the utils namespace never sees the new S4 generic. See a previous discussion at http://www.mail-archive.com/r-de...@r-project.org/msg20553.html Defining a S3 method should work (without the need for a dummy S3 class even with inheritance if you are working with R 2.12): .DollarNames.A <- function(x, pattern) { grep(pattern=pattern, x=c("slotA", "slotB"), value=T) } -Deepayan ______________________________________________ R-help@r-project.org mailing list 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.