[R-pkg-devel] visible binding for '<<-' assignment

Gábor Csárdi c@@rd|@g@bor @end|ng |rom gm@||@com
Thu Sep 3 23:59:11 CEST 2020


On Thu, Sep 3, 2020 at 10:25 PM Dan Zigmond <djz using shmonk.com> wrote:
>
> Thanks, Gabor. I want these to be easily available to package users though – that's why they are in the package. So I would rather not "hide" them in a local environment. This is fundamentally a data package, so access to this data is the primary point of installing it.

Well, if you want to put a cache in a package, then the way I showed
you works well.

Possibly more importantly, maybe I misunderstood something, but
stringi::stri_unescape_unicode() is not doing anything or your
character vectors, because they do not contain escaped characters:

fixed <- stringi::stri_unescape_unicode(pali_alphabet)
identical(pali_alphabet, fixed)
#> TRUE

Gabor

> Is there any other solution?
>
>      Dan
>
> .
> --------------------------
> Dan Zigmond
> djz using shmonk.com
>
>
>
> On Thu, Sep 3, 2020 at 1:40 PM Gábor Csárdi <csardi.gabor using gmail.com> wrote:
>>
>> Store the cached data in an environment within the package:
>>
>> pali_data <- new.env(parent = emptyenv())
>>
>> pali_string_fix <- function() {
>>   pali_data$alphabet <-
>>      stringi::stri_unescape_unicode(pali_alphabet)
>> ...
>> }
>>
>> Gabor
>>
>> On Thu, Sep 3, 2020 at 9:33 PM Dan Zigmond <djz using shmonk.com> wrote:
>> >
>> > Hi, all. I am developing a package that includes some global variables.
>> > Because these are non-ASCII, I have escaped them. But then because these
>> > are difficult to read, I want to provide an easy way for users to unescape
>> > all of them up front. Thus I have code like to create and save the data in
>> > global variables in one file:
>> >
>> > pali_vowels <-
>> >   c("a", "\u0101", "i", "\u012b", "u", "\u016b", "e", "o")
>> > pali_consonants <-
>> >   c("k", "kh", "g", "gh", "\u1e45",
>> >     "c", "ch", "j", "jh", "\u00f1",
>> >     "\u1e6d", "\u1e6dh", "\u1e0d", "\u1e0dh", "\u1e47",
>> >     "t", "th", "d", "dh", "n",
>> >     "p", "ph", "b", "bh", "m",
>> >     "y", "r", "l", "v", "s", "h", "\u1e37", "\u1e43")
>> > pali_alphabet <-c(pali_vowels, pali_consonants)
>> > use_data(pali_alphabet, overwrite = TRUE)
>> >
>> > and then I try to export a function like this in another file:
>> >
>> > pali_string_fix <- function() {
>> >   pali_alphabet <<-
>> >      stringi::stri_unescape_unicode(pali_alphabet)
>> >   # Several more of these...
>> >   }
>> >
>> > The idea is that users can run pali_string_fix() once when they load the
>> > package and then they won't need to deal with all the Unicode escape
>> > sequences after that.
>> >
>> > However, this is getting rejected by the CRAN checks with the message:
>> >
>> > * checking R code for possible problems ... [4s] NOTE
>> > pali_string_fix: no visible binding for '<<-' assignment to
>> >   'pali_alphabet'
>> >
>> > I'm guessing this is because the data and the function are defined in
>> > different files, so even though those globals are defined by my package,
>> > that isn't obvious when the check is run on this code.
>> >
>> > Does anyone have advice for how to fix this?
>> >
>> >      Dan
>> >
>> > .
>> > -------------------------
>> > Dan Zigmond
>> > djz using shmonk.com
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > R-package-devel using r-project.org mailing list
>> > https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list