Skip to content

[R-pkg-devel] Passing CRAN check when an examples must save a file

5 messages · Duncan Murdoch, Zachary Flynn, Tiago Olivoto +1 more

#
I am working on a function in a package that saves a file.  I want to write
an example to document the function so it must save a file, but when I do,
the automatic CRAN checks reject the package because there is a
non-standard file saved in the directory when the second test runs (first,
it runs a test on Windows where the check error does not occur, then on
Linux where it does).  The relevant check output is:

* checking for non-standard things in the check directory ... NOTE
Found the following files/directories:
  ?Produc.csv?

There is no file called Produc.csv anywhere in the directory (the
error doesn't show up in the first run on Windows).

It is generated by running the example code which automatic CRAN
testing might be doing in between running the Windows and Linux
checks?

How do I write an example that must save a file to be an example of
using the function without triggering this issue?

Zach Flynn
#
On 26/09/2019 11:43 p.m., Zachary Flynn wrote:
Save the file to the temporary directory, ?.g.

   filename <- file.path(tempdir(), "Prod?c.csv")
   write.csv(something, file = filename)

You could clean up at the end of the example with

   unlink(filename)

but you shouldn't rely on this alone to prevent the error:  if you're 
writing files, you should *only* be doing it in the temporary directory.

Duncan Murdoch
#
Thanks much, that solved the issue,

Zach Flynn


On Fri, Sep 27, 2019, 8:36 AM Duncan Murdoch <murdoch.duncan at gmail.com>
wrote:

  
  
#
Dear all,
I had the same problem when I submitted my R package 'metan' to CRAN for
the first time.

"Please ensure that your functions do not write by default or in your
examples/vignettes/tests in the user's home filespace (including the
package directory and getwd()). In your examples/vignettes/tests you can
write to tempdir()"

I have several 'summary()' functions like:








*summary.waasb <- function(object, export = FALSE, file.name
<http://file.name> = "summary_waasb", ...) {  # do all I need here  if
(export == TRUE) {    sink(paste0(file.name <http://file.name>, ".txt"))
# do all I need here    sink()  }}*

All 'export' arguments are set to 'FALSE'. So, no file is generated in the
user's working directory.
Is the above function not according to the CRAN policies?

In two vignettes I have a code like:



*```{r, eval=FALSE }summary(stat_ge, export = TRUE)```*

Please, note that 'eval = FALSE'. Could this be the problem?
The suggestion is to write to a tempdir() but even looking at the Duncan
Murdoch's answer I cannot see how to do that in my case.
Looking for any suggestion.
Best regards,
Tiago Olivoto









---------- Forwarded message ---------
De: Duncan Murdoch <murdoch.duncan at gmail.com>
Date: sex, 27 de set de 2019 ?s 09:44
Subject: Re: [R-pkg-devel] Passing CRAN check when an examples must save a
file
To: Zachary Flynn <zlflynn at gmail.com>, <r-package-devel at r-project.org>
On 26/09/2019 11:43 p.m., Zachary Flynn wrote:
write
Save the file to the temporary directory, ?.g.

   filename <- file.path(tempdir(), "Prod?c.csv")
   write.csv(something, file = filename)

You could clean up at the end of the example with

   unlink(filename)

but you shouldn't rely on this alone to prevent the error:  if you're
writing files, you should *only* be doing it in the temporary directory.

Duncan Murdoch

______________________________________________
R-package-devel at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
#
Read the Posting Guide... sending html formatted email corrupts your message.

Reading between the garbage...

a) Pasting an extension is not necessary.
b) using tempfile() in your example as an argument to sink( file=) is a straightforward way to illustrate that a file can be created.
On September 27, 2019 5:16:30 PM PDT, Tiago Olivoto <tiagoolivoto at gmail.com> wrote: