[R-pkg-devel] How to write example results to a tempdir()?
Jose A Guijarro
jguijarrop at aemet.es
Thu Apr 26 14:11:18 CEST 2018
El 25/04/18 a las 20:21, Duncan Murdoch escribió:
> On 25/04/2018 1:32 PM, Sarah Goslee wrote:
>> Don't change the working directory! That has all kinds of unpleasant
>> side effects for the unsuspecting user, possibly even more so than
>> writing to a file.
>> Instead, write the file to the temp directory, and read it from
>> there, with e.g.
>> wd <- tempdir()
>> write(dat, file.path(wd, 'Ttest_1981-2000.dat'))
>> Using file.path() means that the appropriate path delimiter for that
>> OS will be used.
> That's one good way to do it. But it is possible to change directory
> and change back at the end of the example. For example,
> wd <- tempdir()
> savedir <- setwd(wd)
> ... # the original code that writes and reads in the current dir
> There's a worry that an error in the middle of the code will leave the
> user in the wrong place. If that's really unlikely to happen, then
> this code is a little simpler than Sarah's suggestion.
> If it is likely, you can use tryCatch(..., finally = setwd(savedir)),
> but I think Sarah's solution would be preferable in most cases: many
> users will not understand what tryCatch() does.
> Duncan Murdoch
Many thanks for the suggestion! In this way I only need to apply slight
changes in the examples and can avoid modifying all read/writes along
the package. I will try this approach and see if it passes the CRAN checks.
>> On Wed, Apr 25, 2018 at 12:30 PM, Jose A Guijarro
>> <jguijarrop at aemet.es> wrote:
>>> Dear all,
>>> I am struggling to update my package climatol from version 3.0 to 3.1.
>>> The old version had all examples under a "dontrun" section because they
>>> needed files created by other examples that the user had to run first.
>>> As this is not acceptable anymore, I made the examples runnable and
>>> prepared small ad-hoc datasets, but then writing files to the user
>>> is against the CRAN policy rules, and I was suggested to run them on a
>>> temporal directory. Therefore I changed all my examples to read/write
>>> files to a tempdir(), as in:
>>> #Set a temporal working directory and write input files:
>>> wd <- tempdir()
>>> data(Ttest) #(This loads matrix 'dat' and data.frame 'est.c')
>>> rm(dat,est.c) #remove loaded data from memory space
>>> #Now run the example:
>>> #Input and output files can be found in directory:
>>> But now CRAN checks return this warning ten times (one for every
>>> in the package):
>>> Warning: working directory was changed to ‘/tmp/RtmpWSRK2F’, resetting
>>> Any hint on how to solve the problem will be highly appreciated...
More information about the R-package-devel