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

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Thu Sep 3 23:50:52 CEST 2020


On 03/09/2020 4:31 p.m., Dan Zigmond 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.

You shouldn't be doing that.  Write a function that returns those 
results, and tell the user that if they store them in a global variable 
named "string_fixes" (or whatever), then your function will use their 
values instead of your own built in ones.  You should never write to the 
global environment, but you can read from it.

Duncan Murdoch
> 
> 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