There is a version of the methods package committed today that does dispatch in C for these functions. This should considerably speed up programs that define methods for these functions (specifically, having methods should only marginally affect the existing computations for the same function on basic vectors and objects). This is the first of several steps needed. Not quite all primitives are handled (only those that use DispatchOrEval internally). And there will be a few related changes in the methods structure to add a bit more speed. A couple of points of strategy should be discussed, preferably before version 1.4 is frozen. I'll try to post a note on these in the near future. When writing methods for primitives, it's currently a bit of a trick to find the formal argument list, since R currently just returns NULL for args(f) if f is a primitive. (We may need to make some change here.) Two that are worth noting are "[" and "[[" (and the corresponding "[<-" and "[[<-"):
args(getGeneric("["))
function (x, i = NULL, j = NULL, ..., drop = TRUE) NULL
args(getGeneric("[["))
function (x, i = NULL, ...) NULL The i,j arguments are there so we can, e.g., define methods that dispatch on the column argument for data-frame-like objects in the future. If you're fussing about efficiency, it's slightly better to make sure you define methods with all the formal arguments (and anyway, it's cleaner code). John
John M. Chambers jmc@bell-labs.com Bell Labs, Lucent Technologies office: (908)582-2681 700 Mountain Avenue, Room 2C-282 fax: (908)582-3340 Murray Hill, NJ 07974 web: http://www.cs.bell-labs.com/~jmc -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._