[R-pkg-devel] visible binding for '<<-' assignment
Ben Bolker
bbo|ker @end|ng |rom gm@||@com
Thu Sep 3 23:35:43 CEST 2020
Is there a reason that this slightly more explicit version wouldn't work?
pali_string_fix <- function() {
assign("pali_alphabet", stringi::stri_unescape_unicode(pali_alphabet),
.GlobalEnv)
}
On 9/3/20 5:25 PM, Dan Zigmond 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.
>
> 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
>>
>
> [[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