[Rd] "Name partially matched in data frame"

Hervé Pagès hpages at fhcrc.org
Thu May 1 00:43:58 CEST 2014


Also the real agenda behind this warning is not clear. Looks like
just a normal warning, providing some potentially useful/important
information to the user.

However, in the NEWS file, this entry is in the DEPRECATED AND DEFUNCT
section:

       \item Partial matching when using the \code{$} operator \emph{on
         data frames} now throws a warning and may become defunct in the
       future. If partial matching is intended, replace \code{foo$bar}
       by \code{foo[["bar", exact = FALSE]]}.

Even though it's not deprecated yet...

H.

On 04/30/2014 03:34 PM, Hervé Pagès wrote:
> Hi,
>
> Would be good to have the man page updated about this. It still
> says:
>
>   'x$name' is equivalent to 'x[["name", exact=FALSE]]'
>
> which doesn't seem to be completely true anymore (the former emits
> a warning in case of partial matching, not the latter).
>
> It looks like for a data.frame, ‘x$name’ is now equivalent to
> 'x[["name", exact=NA]]':
>
>    > data.frame(aa=1:3)$a
>    [1] 1 2 3
>    Warning message:
>    In `$.data.frame`(data.frame(aa = 1:3), a) :
>      Name partially matched in data frame
>
>    > data.frame(aa=1:3)[["a", exact=NA]]
>    [1] 1 2 3
>    Warning message:
>    In .subset2(x, i, exact = exact) : partial match of 'a' to 'aa'
>
> except that, instead of just calling 'x[["name", exact=NA]]' internally,
> the former comes up with its own (and less informative) error message.
>
> Cheers,
> H.
>
>  > sessionInfo()
> R version 3.1.0 (2014-04-10)
> Platform: x86_64-unknown-linux-gnu (64-bit)
>
> locale:
>   [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
>   [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
>   [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
>   [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
>   [9] LC_ADDRESS=C               LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
>
> On 04/30/2014 12:32 PM, Duncan Murdoch wrote:
>> On 30/04/2014 3:03 PM, Fisher Dennis wrote:
>>> R 3.1.0
>>> OS X
>>>
>>> Colleagues,
>>>
>>> I recently updated to 3.1.0 and I have encountered
>>>     Warning messages: ...  Name partially matched in data frame
>>> when I do something like:
>>>     DATAFRAME$colname
>>> where colname is actually something longer than that (but unambiguous).
>>>
>>> I have much appreciated the partial matching capabilities because it
>>> fits with my workflow.  I often receive updated data months after the
>>> initial code is written.  In order to keep track of what I did in the
>>> past, I provide lengthy (unambiguous) names for columns, then
>>> abbreviate the names as I call them.  This behavior has been termed
>>> “lazy” in various correspondence on this mailing list but it works for
>>> me and probably works for others.
>>>
>>> I realize that the new message is only a warning but it is a minor
>>> nuisance.  Would it be possible to add an
>>>     option(partialMatch=TRUE)    ## default is FALSE
>>> or something similar to suppress that behavior?  That should keep both
>>> camps happy.
>>
>> I'd be much happier with a general mechanism to suppress particular
>> warnings.  Then you could choose to suppress this one.
>>
>> We might be able to do that with options("warning.expression"), but I
>> don't see how...
>>
>> Duncan Murdohc
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the R-devel mailing list