Re: [Rd] RFC: adding an 'exact' argument to [[

From: Seth Falcon <sfalcon_at_fhcrc.org>
Date: Thu, 17 May 2007 12:24:02 -0700

Bill Dunlap <bill_at_insightful.com> writes:
> This sounds interesting. Do you intend to leave the $
> operator alone, so it will continue to do partial
> matching? I suspect that that is where the majority
> of partial matching for list names is done.

The current proposal will not touch $. I agree that most intentional partial matching uses $ (hopefully only during interactive sessions). The main benefit of the our proposed change is more reliable package code. For long lists and certain patterns of use, there are also performance benefits:

    > kk <- paste("abc", 1:(1e6), sep="")
    > vv = as.list(1:(1e6))
    > names(vv) = kk

    > system.time(vv[["fooo", exact=FALSE]])
       user  system elapsed 
      0.074   0.000   0.074 

    > system.time(vv[["fooo", exact=TRUE]])
       user  system elapsed 
      0.042   0.000   0.042 


> It might be nice to have an option that made x$partial warn so we
> would fix code that relied on partial matching, but that is lower
> priority.

I think that could be useful as well. To digress a bit further in discussing $... I think the argument that partial matching is desirable because it saves typing during interactive sessions now has a lot less weight. The recent integration of the completion code gives less typing and complete names.

+ seth

-- 
Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center
http://bioconductor.org

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Thu 17 May 2007 - 19:37:22 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 17 May 2007 - 21:33:56 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.