[Rd] str2lang throws error when the string is empty

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Sat Feb 12 10:58:05 CET 2022


>>>>> Dipterix Wang 
>>>>>     on Fri, 11 Feb 2022 06:55:44 -0500 writes:

    > Hi,

    > str2lang("") raises an error in current version. 

on purpose.

    > Would it
    > be good if it returns a missing value expression? 

Well, others may be able to better explain why "the empty name"
aka your "missing value expression" or just "the missing"   is a
"dangerous" object  and ideally it would not be available at all
on the R level.  OTOH, it is available e.g. via alist(), maybe
slightly "less ugly" as    alist(.=)$.

but I don't think there are really good use cases.
(see below)

    > One use-case would be to build an expression that subsets an
    > array:

    > # Expected: x[index1, ] 
    > as.call(list(quote(`[`), quote(x), quote(index1), str2lang("")))

    > Right now I'm using the following, which is ugly
    > as.call(list(quote(`[`), quote(x), quote(index1), alist(x=)[[1]]))

Well, in such cases, much less ugly than both your version is to
use  substitute(),
here e.g.,

  > substitute(x[I,], list(I = quote(index1)))
  x[index1, ]
  >

    > Thanks, - Dipterix

You are welcome,
Martin



{Please, for next time do use  text/plain  e-mail : }

    > [[alternative HTML version deleted]]



More information about the R-devel mailing list