Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using datasets in an R package

Tags:

r

cran

I am trying to get the latest version of my package (https://github.com/jmcurran/relSim) on CRAN. This has been rejected because of the use of a data set that is included in the package in a function which is not exported (i.e. the user cannot use it unless they use the ::: operator. A code snippet:

testIS = function(nc = c(3, 2), locus = 1, seed = 123456){
  set.seed(seed)
  np = 2 * nc[2]
  freqs = USCaucs$freqs

The dataset is included in the package, and as per Hadley's advice I have LazyData: true in my DESCRIPTION file. However I get this note from https://win-builder.r-project.org which I don't know how to resolve.

 * checking R code for possible problems ... [11s] NOTE
 testIS: no visible binding for global variable 'USCaucs'
 Undefined global functions or variables::
   USCaucs

I find this especially frustrating, since, as I said, this function is not even exported (it also works without complaint because the package loads this dataset). All help appreciated

like image 687
James Curran Avatar asked May 02 '26 16:05

James Curran


1 Answers

The solution appears to involve a little duplication. At the suggestion of Thomas Lumley, I placed the object in R/sysdata.rda as well as having it in data/USCaucs.rda. I followed Hadley Wickham's suggestion to use devtools::use_data with the argument internal set to TRUE so that it was saved in the correct manner for a package.

As noted, this solution involves duplicating the data. This isn't an issue for a small object such as the one I have here, but I'd like to think there is a more elegant solution out there.

like image 105
James Curran Avatar answered May 04 '26 05:05

James Curran