Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

list members can be accessed with partial name? Is this a feature?

Tags:

r

Consider this R code

> l = list(key = 1)
> l$k
[1] 1
> l$ke
[1] 1
> l[['k']]
NULL
> names(l)
[1] "key"

Does this mean that you can access a list member with $ and its partial name? I couldn't believe my eyes when I discovered this after a frustrating bug-hunting.

Is this a feature of R list? Is there a name for it? Is it possible to turn it off? This causes obvious troubles when you use it like a Python dict.

like image 414
Sunfucius Avatar asked Jan 30 '18 16:01

Sunfucius


1 Answers

It's a feature that is meant to help in interactive mode. You can tighten it locally, see help(options) which has

 ‘warnPartialMatchArgs’: logical.  If true, warns if partial
      matching is used in argument matching.

 ‘warnPartialMatchAttr’: logical.  If true, warns if partial
      matching is used in extracting attributes via ‘attr’.

 ‘warnPartialMatchDollar’: logical.  If true, warns if partial
      matching is used for extraction by ‘$’.

Example:

R> l <- list(key = 1)
R> l$k
[1] 1
R> options("warnPartialMatchDollar"=TRUE)
R> l$k
[1] 1
Warning message:
In l$k : partial match of 'k' to 'key'
R> 

and you can further promote warnings to errors if you so choose (and that option is described on the same page).

like image 160
Dirk Eddelbuettel Avatar answered Sep 28 '22 03:09

Dirk Eddelbuettel