From pdalgd at gmail.com  Wed Mar 20 17:16:26 2013
From: pdalgd at gmail.com (peter dalgaard)
Date: Wed, 20 Mar 2013 17:16:26 +0100
Subject: [Rd] Deprecating partial matching in $.data.frame
In-Reply-To: <CABdHhvEb6cg2Jtgmoor-H8-YHpoEK=RJSnDH6kN7kE46yxmF6g@mail.gmail.com>
References: <A0DE2631-213D-4DB2-A952-5DBFA7A7F14C@gmail.com>
	<CABdHhvEb6cg2Jtgmoor-H8-YHpoEK=RJSnDH6kN7kE46yxmF6g@mail.gmail.com>
Message-ID: <615CDFB0-1E10-4F84-A920-849BDC806A70@gmail.com>


On Mar 20, 2013, at 16:23 , Hadley Wickham wrote:

> On Wed, Mar 20, 2013 at 7:28 AM, peter dalgaard <pdalgd at gmail.com> wrote:
>> Allowing partial matching on $-extraction has always been a source of accidents. Recently, someone who shall remain nameless tried names(mydata) <- "d^2" followed by mydata$d^2.
>> 
>> As variables in a data frame are generally considered similar to variables in, say, the global environment, it seems strange that foo$bar can give you the content of foo$bartender.
>> 
>> In R-devel (i.e., *not* R-3.0.0 beta, but 3.1.0-to-be) partial matches now gives a warning.
> 
> Just for data frames, or also for lists?

Just for data frames, at least for now. For lists, there are just too many uses of chisq.test()$exp etc. (I nearly wrote t.test()$p, but that doesn't actually work!)

> 
> I think this is a fantastic change, but I do worry a little that it is
> going to generate warnings for a _lot_ of existing code.

We'll see about that, but I expect it not to be all that bad. In general purpose code, you need to have a situation where the data frame has known column names, and the one that you want is sufficiently awkward to type.  The p-value column in anova is about the only realistic scenario that I can come up with. The ones in, e.g., summary.lm are in a matrix, not a data frame.  

> 
> Hadley
> 
> -- 
> Chief Scientist, RStudio
> http://had.co.nz/

-- 
Peter Dalgaard, Professor
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



[Rd] Deprecating partial matching in $.data.frame
peter dalgaard