Niels Richard Hansen
2009-Feb-19 09:29 UTC
[R] Meaning of .local and the special token ..1 returned from match.call
I am writing a version of the subset function for a new class. I don't understand the behavior of match.call in this particular case, and I didn't seem to be able to find much help in the language definition or the email archive. Here follows a minimal example: setClass("myClass", representation(id = "factor") ) setMethod("subset","myClass", function(x,subset,...) match.call() ) tmp <- new("myClass",id=factor(1:10)) subset(x=tmp,subset=id >5) which gives me .local(x = x, subset = ..1) I want to call a further subset function, subset.data.frame, say, using the unevaluated expression "id > 5", but in this setup I don't understand how I should proceed. I can't find any explanation of .local and what the ..1 means, except that ..1 is a "special token". A small modification of the method as setMethod("subset","myClass", function(x,...) match.call() ) where I exclude explicitly mentioning the subset argument gives, however, what I expected: subset(x = tmp, subset = id > 5) This might be OK, and I am able to get everything to work without having an explicit subset argument in the class method -- by passing the ... -- but I think it would be nice to have the subset argument like in the S3 version of subset.data.frame. It seems that the issue is related to the fact that the generic subset method has the arguments (x,...). Is there a way to get around this so that my method can have explicit additional arguments like the subset-argument? Thanks for any help, Niels -- Niels Richard Hansen Associate Professor Department of Mathematical Sciences University of Copenhagen Universitetsparken 5 2100 Copenhagen ? Denmark +45 353 20783