Come on, folks. There is no NSE involved in calls to get(): it's
standard evaluation all the way into the C code. Prior to the change a
first argument that is anything other than a character vector would
produce an error. After the change, passing in a symbol will do the
obvious thing. Code that worked previously without error (i.e. called
get() with string values) will continue to work exactly as it did
before.

It's a little more convenient and a little more efficient for some
computations on the language not to have to call as.character on
symbols before passing them to get(). Hence the change expanding the
domain of get().

luke

On Tue, 17 Nov 2020, Gabriel Becker wrote:

Hi all,
I have used variable values in get() as well, and including, I think, in
package code (though pretty infrequently).
Perhaps a character.only argument similar to library?

~G

On Mon, Nov 16, 2020 at 5:31 PM Hugh Parsonage <hugh.parson...@gmail.com>
wrote:
      I noticed the recent commit to R-dev (r79434).  Is this wise?
      I've
      often used get() in constructions like

      for (j in ls()) if (is.numeric(x <- get(j))) ...

      (and often interactively, rather than in a package)

      Am I to understand that get(j) will now be equivalent to `j`
      even if j
      is a string referring putatively to another object?

      On Sat, 14 Nov 2020 at 01:34, <luke-tier...@uiowa.edu> wrote:
      >
      > Worth looking into. It would probably cause some check
      failures, so
      > would probably be a good idea to run a check across
      BIOC/CRAN.  At the
      > same time it would be worth allowing name objects (type
      "symbol") so
      > thee don't have to be converted to character for the call and
      then
      > back to names internally for the environment lookup.
      >
      > Best,
      >
      > luke
      >
      > On Fri, 13 Nov 2020, Antoine Fabri wrote:
      >
      > > Dear R-devel,
      > >
      > > The doc of exists, get and get0 is unambiguous, x should be
      an object given
      > > as a character string. However these accept longer inputs.
      It can lead an
      > > uncareful user to think these functions are vectorized when
      they're not,
      > > and generally lets through bugs that one might have
      preferred to trigger
      > > earlier failure.
      > >
      > > ``` r
      > > exists("d")
      > > #> [1] FALSE
      > > exists(c("c", "d"))
      > > #> [1] TRUE
      > > get(c("c", "d"))
      > > #> function (...)  .Primitive("c")
      > > get0(c("c", "d"))
      > > #> function (...)  .Primitive("c")
      > > ```
      > >
      > > I believe these should either fail, or be vectorized,
      probably the former.
      > >
      > > Thanks,
      > >
      > > Antoine
      > >
      > >       [[alternative HTML version deleted]]
      > >
      > > ______________________________________________
      > > R-devel@r-project.org mailing list
      > > https://stat.ethz.ch/mailman/listinfo/r-devel
      > >
      >
      > --
      > Luke Tierney
      > Ralph E. Wareham Professor of Mathematical Sciences
      > University of Iowa                  Phone:
       319-335-3386
      > Department of Statistics and        Fax:
       319-335-3017
      >     Actuarial Science
      > 241 Schaeffer Hall                  email:
       luke-tier...@uiowa.edu
      > Iowa City, IA 52242                 WWW:
      http://www.stat.uiowa.edu
      >
      > ______________________________________________
      > R-devel@r-project.org mailing list
      > https://stat.ethz.ch/mailman/listinfo/r-devel

      ______________________________________________
      R-devel@r-project.org mailing list
      https://stat.ethz.ch/mailman/listinfo/r-devel




--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
   Actuarial Science
241 Schaeffer Hall                  email:   luke-tier...@uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to