[R-pkg-devel] RData files with identical objects in package

peter dalgaard pd@lgd @ending from gm@il@com
Mon Jan 14 15:16:57 CET 2019


There is (of course) a difference between what is the default for a (missing) field in DESCRIPTION and what shells like RStudio put into the field by default... 

I don't think there is a discrepancy between what is in the official documentation and what R and R CMD * actually does.

-pd

> On 14 Jan 2019, at 07:10 , Troels Ring <tring using gvdnet.dk> wrote:
> 
> Thank you so much! Perhaps it could be mentioned in the official
> documentation on writing R extensions - even if - if I can read English -
> the 
> default is to avoid "lazyData" loading - and "laxyData" loading is in some
> opposition to loading using data() - whereas - if we use RStudio, and make
> an R documentation file for data, we have it ending with:
> \examples{
> data(ddd)
> ## maybe str(ddd) ; plot(ddd) ...
> }
> \keyword{datasets}
> 
> At the same time as "lazyData" is used default in DESCRIPTION ?
> 
> 1.1.6 Data in packages
> The data subdirectory is for data files, either to be made available via
> lazy-loading or for loading using data(). (The choice is made by the
> 'LazyData' field in the DESCRIPTION file: the default is not to do so.) It
> should not be used for other data files needed by the package, and the
> convention has grown up to use directory inst/extdata for such files.
> 
> All best wishes
> Troels
> 
> 
> -----Oprindelig meddelelse-----
> Fra: peter dalgaard <pdalgd using gmail.com> 
> Sendt: 13. januar 2019 22:00
> Til: Troels Ring <tring using gvdnet.dk>
> Cc: Michael Dewey <lists using dewey.myzen.co.uk>; package-develop
> <r-package-devel using r-project.org>
> Emne: Re: [R-pkg-devel] RData files with identical objects in package
> 
> I think it is illegal if you use the lazyload database, because that is
> indexed by name and contains every object that would be created by data().
> This creates an obvious issue if two objects share a name. 
> 
> Once you use the lazyload database, loading the package creates an
> environment which is initially full of promises, one for each object.
> Evaluating one of these makes the actual object appear in the environment. 
> 
> Using data() causes the corresponding promise(s) to be created in the global
> environment. IIRC, there is a registry that says which objects are created
> by which arguments to data(), but as they are still taken from the lazydata
> database, the last one created with a given name still wins.
> 
> -ps 
> 
>> On 13 Jan 2019, at 14:13 , Troels Ring <tring using gvdnet.dk> wrote:
>> 
>> Thanks a lot - I'm sure you are right that I could just use different 
>> names but I cannot understand why it could cause problem to have two 
>> different well formated .RData files in the /data directory both with 
>> an "x" - is that really illegal? I cannot see it stated in the 
>> official munual - but it is long (wrting r extensions) -BW Troels
>> 
>> -----Oprindelig meddelelse-----
>> Fra: Michael Dewey <lists using dewey.myzen.co.uk>
>> Sendt: 13. januar 2019 12:56
>> Til: Troels Ring <tring using gvdnet.dk>; package-develop 
>> <r-package-devel using r-project.org>
>> Emne: Re: [R-pkg-devel] RData files with identical objects in package
>> 
>> Dear Troels
>> 
>> Perhaps I misunderstand what you are trying to do but would it be 
>> possible to put each x and y into a list or a dataframe with different 
>> names and then modify your usgae to pull them from there? Then there 
>> would be no danger of users getting the wrong x and y
>> 
>> Michael
>> 
>> On 13/01/2019 08:38, Troels Ring wrote:
>>> Dear friends - I have a package under creation making heavy 
>>> calculations on chemical/clinical data and I plan to include as 
>>> "examples" the use of some literature data used in my papers. To 
>>> illustrate what then occurs, I made two RData files consisting only 
>>> of x and y with different values for x and y like
>>> 
>>> X <- 100
>>> 
>>> Y <- 1000
>>> 
>>> save(x,y,file="first.RData")
>>> 
>>> and then a new x and y in "second" with x <- 45 and y <- 32
>>> 
>>> When I put these in a "data" directory of a new package without 
>>> further ado in RStudio
>>> 
>>> Ctrl-shift-L
>>> 
>>> Ctrl-shift-B
>>> 
>>> 
>>> 
>>> .there is a warning
>>> 
>>> * installing *source* package 'try' ...
>>> 
>>> ** R
>>> 
>>> ** data
>>> 
>>> *** moving datasets to lazyload DB
>>> 
>>> warning: objects 'x', 'y' are created by more than one data call
>>> 
>>> ** byte-compile and prepare package for lazy loading
>>> 
>>> ** help
>>> 
>>>  converting help for package 'try'
>>> 
>>> *** installing help indices
>>> 
>>>    finding HTML links ...    hello
> html
>>> 
>>> done
>>> 
>>> 
>>> 
>>> Now, when I clear the workspace:
>>> 
>>>> ls()
>>> character(0)
>>>> devtools::load_all(".")
>>> Loading try
>>> 
>>> Restarting R session...
>>> 
>>>> library(try)
>>>> ls()
>>> character(0)
>>>> x   #-- so even if workspace Is empty x is still kept
>>> [1] 45
>>>> data(first) # and "first" is not seen x
>>> [1] 45
>>> 
>>> 
>>> 
>>> x is still present - and y
>>> 
>>> 
>>> 
>>> I have been reading and searching in "Writing R extensions" but so 
>>> far didn't find the clue.
>>> 
>>> Seemingly it is the file with the last name that is assessed - when I 
>>> rename first.RData to "xfile.RData" we get 100 and 1000.
>>> 
>>> Now and then when running ctrl-shift-L and - B we see
>>> 
>>> 
>>> 
>>> Attaches package: 'try'
>>> 
>>> The following objects are masked _by_ '.GlobalEnv':
>>> x, y
>>> 
>>> 
>>> 
>>> Sorry for these problems -
>>> 
>>> BW
>>> Troels
>>> 
>>> 
>>> 	[[alternative HTML version deleted]]
>>> 
>>> ______________________________________________
>>> R-package-devel using r-project.org mailing list 
>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>> 
>> 
>> --
>> Michael
>> http://www.dewey.myzen.co.uk/home.html
>> 
>> ______________________________________________
>> R-package-devel using r-project.org mailing list 
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> 
> --
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000
> Frederiksberg, Denmark
> Phone: (+45)38153501
> Office: A 4.23
> Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com



More information about the R-package-devel mailing list