[R-pkg-devel] correcting errors in an existing package

Lionel Henry ||one| @end|ng |rom po@|t@co
Tue Apr 4 22:19:15 CEST 2023


Hi Dennis,

I'm reincluding the list so that other people can see the clarifications too.

On 4/4/23, Dennis Boos <boos using ncsu.edu> wrote:

> Thanks so much. Could you give me a little more clarity?
>
> 1. Where do I add
>
> #' @importFrom stats var sd etc
>
> Within the R functions? Each one separately
>
> 2. Was "NULL" part of the code you meant me to use?

The roxygen code needs to be attached to some objects. You can include
the importFrom line as part of the docstring of another function but
since an import is often used in many functions it makes more sense to
declare them separately. Here I've used the `NULL` object for these
declarations, another option would have been "_PACKAGE", see
https://r-pkgs.org/man.html#sec-man-package-doc


> 3. I had no idea that the "check" remakes the tar.gz file from the folder.
> I thought it would have wanted to work off the created tar.gz because
> that's what we submit.

In the devtools workflow we rarely work directly with tar.gz files. They
are created behind the scene in the temp folder. At submission time we
use `devtools::release()` to create and send the tarball to CRAN.

Of course it's also fine to use the manual workflow or mix both.

Best,
Lionel

On 4/4/23, Lionel Henry <lionel using posit.co> wrote:
>> Here is my namespace.  It says not to edit, but I had been told to add
>> the importFrom. So I didn't use
>> devtools::document() for fear roxygen2 would get rid of it.
>
> `devtools::check()` calls `document()` automatically so your changes to
> the NAMESPACE file get overwritten. You can see this in the output.
>
> To solve this, add the appropriate roxygen2 tag somewhere in your package
> e.g.
>
> ```
> #' @importFrom stats var sd etc
> NULL
> ```
>
> Best,
> Lionel
>
> On 4/4/23, Lionel Henry <lionel using posit.co> wrote:
>>> Here is my namespace.  It says not to edit, but I had been told to add
>>> the importFrom. So I didn't use
>>> devtools::document() for fear roxygen2 would get rid of it.
>>
>> `devtools::check()` calls `document()` automatically so your changes to
>> the NAMESPACE file get overwritten. You can see this in the output.
>>
>> To solve this, add the appropriate roxygen2 tag somewhere in your package
>> e.g.
>>
>> ```
>> #' @importFrom stats var sd etc
>> NULL
>> ```
>>
>> Best,
>> Lionel
>>
>> On 4/4/23, Dennis Boos <boos using ncsu.edu> wrote:
>>> Thanks so much to all of you.  If you have time, I'm getting really
>>> contradictory results.
>>>
>>> 1. It first seemed to have passed the check in Rstudio (I used
>>> device::build() in the R window and then clicked on check in the drop
>>> down
>>> menu under build).
>>>
>>> ==> devtools::check(document = FALSE, args = c('--as-cran'))
>>> ── R CMD check results  Monte.Carlo.se 0.1.1 ────
>>> Duration: 56.6s
>>> 0 errors ✔ | 0 warnings ✔ | 0 notes ✔
>>>
>>> R CMD check succeeded
>>>
>>> However, I then couldn't find the tar.gz where it was supposed to be. It
>>> was just gone.
>>>
>>>
>>> Here is my namespace.  It says not to edit, but I had been told to add
>>> the importFrom. So I didn't use
>>> devtools::document() for fear roxygen2 would get rid of it.
>>>
>>> # Generated by roxygen2: do not edit by hand
>>> importFrom("stats", "cor", "sd", "var")
>>> export(boot.se)
>>> export(jack.se)
>>> export(mc.se.matrix)
>>> export(mc.se.vector)
>>> export(pairwise.se)
>>> export(sim.samp)
>>>
>>> 4. Here is my DESCRIPTION file
>>>
>>> Package: Monte.Carlo.se
>>> Type: Package
>>> Title: Monte Carlo Standard Errors
>>> Version: 0.1.1
>>> Author: Dennis Boos, Kevin Matthew, Jason Osborne
>>> Maintainer: Dennis Boos <boos using ncsu.edu>
>>> Description: Computes Monte Carlo standard errors for summaries of
>>> Monte Carlo output. Summaries and their standard errors are based on
>>> columns of Monte Carlo simulation output. Dennis D. Boos and Jason A.
>>> Osborne (2015) <doi:10.1111/insr.12087>.
>>> License: GPL-3
>>> Encoding: UTF-8
>>> RoxygenNote: 7.2.3
>>> Suggests: knitr, rmarkdown
>>> Imports: stats
>>> VignetteBuilder: knitr
>>>
>>> 5. And because of your advice: " It sounds as though you're using
>>> Roxygen2 to generate your NAMESPACE file.
>>> ff so, you need @imports directives in the comments
>>> (conventionally before the function that uses the import, but I think it
>>> doesn't really matter where)."
>>>
>>> So I put "@imports" in the function that had trouble
>>>
>>> #' @examples
>>> #' \donttest{
>>> #' # Using the output data matrix hold generated in vignette Example3,
>>> #' # calculate jackknife and bootstrap standard errors
>>> #' # for the differences and ratios of the CV estimates.
>>> #' # First get the components of hold needed.
>>> #'
>>> #' @imports
>>> #'
>>> #' trim20 <- function(x){mean(x,.2)} # 20% trimmed mean function
>>>
>>> Was that the correct thing to do?
>>>
>>> 6. And here are the failed check results. I'm clueless at this point.
>>>
>>> ==> devtools::check(document = FALSE, args = c('--as-cran'))
>>> ══ Building
>>> ════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════Setting
>>> env vars:
>>> • CFLAGS    : -Wall -pedantic -fdiagnostics-color=always
>>> • CXXFLAGS  : -Wall -pedantic -fdiagnostics-color=always
>>> • CXX11FLAGS: -Wall -pedantic -fdiagnostics-color=always
>>> • CXX14FLAGS: -Wall -pedantic -fdiagnostics-color=always
>>> • CXX17FLAGS: -Wall -pedantic -fdiagnostics-color=always
>>> • CXX20FLAGS: -Wall -pedantic -fdiagnostics-color=always── R CMD build
>>> ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────✔
>>>  checking for file 'C:\Users\boos\Dropbox\My PC
>>> (boos-home)\Desktop\dennis\R.packages\Monte.Carlo.se.March.2023/DESCRIPTION'
>>> ...─  preparing 'Monte.Carlo.se':✔  checking DESCRIPTION
>>> meta-information ...─  installing the package to build vignettes✔
>>> creating vignettes (3.6s)─  checking for LF line-endings in source and
>>> make files and shell scripts─  checking for empty or unneeded
>>> directories─  building 'Monte.Carlo.se_0.1.1.tar.gz'
>>>    ══ Checking
>>> ════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════Setting
>>> env vars:
>>> • _R_CHECK_CRAN_INCOMING_REMOTE_               : FALSE
>>> • _R_CHECK_CRAN_INCOMING_                      : FALSE
>>> • _R_CHECK_FORCE_SUGGESTS_                     : FALSE
>>> • _R_CHECK_PACKAGES_USED_IGNORE_UNUSED_IMPORTS_: FALSE
>>> • NOT_CRAN                                     : true── R CMD check
>>> ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>>>  using log directory 'C:/Users/boos/Dropbox/My PC
>>> (boos-home)/Desktop/dennis/R.packages/Monte.Carlo.se.Rcheck' (793ms)─
>>> using R version 4.2.3 (2023-03-15 ucrt)─  using platform:
>>> x86_64-w64-mingw32 (64-bit)─  using session charset: UTF-8─  using
>>> options '--no-manual --as-cran' (653ms)✔  checking for file
>>> 'Monte.Carlo.se/DESCRIPTION'─  checking extension type ... Package─
>>> this is package 'Monte.Carlo.se' version '0.1.1'─  package encoding:
>>> UTF-8✔  checking package namespace information✔  checking package
>>> dependencies (3.2s)✔  checking if this is a source package✔  checking
>>> if there is a namespace✔  checking for executable files (491ms)✔
>>> checking for hidden files and directories ...✔  checking for portable
>>> file names✔  checking serialization versions✔  checking whether
>>> package 'Monte.Carlo.se' can be installed (2.9s)✔  checking installed
>>> package size ... ✔  checking package directory ...✔  checking for
>>> future file timestamps ... ✔  checking 'build' directory✔  checking
>>> DESCRIPTION meta-information ... ✔  checking top-level files ...✔
>>> checking for left-over files✔  checking index information ... ✔
>>> checking package subdirectories ... ✔  checking R files for non-ASCII
>>> characters ... ✔  checking R files for syntax errors ... ✔  checking
>>> whether the package can be loaded ... ✔  checking whether the package
>>> can be loaded with stated dependencies ... ✔  checking whether the
>>> package can be unloaded cleanly ... ✔  checking whether the namespace
>>> can be loaded with stated dependencies ... ✔  checking whether the
>>> namespace can be unloaded cleanly ... ✔  checking loading without
>>> being on the library search path ... N  checking dependencies in R
>>> code ...
>>>    Namespace in Imports field not imported from: 'stats'
>>>      All declared Imports should be used.✔  checking S3 generic/method
>>> consistency (422ms)✔  checking replacement functions ... ✔  checking
>>> foreign function calls ... N  checking R code for possible problems
>>> (3s)
>>>    boot.se: no visible global function definition for 'sd'
>>>    boot.var: no visible global function definition for 'var'
>>>    corr: no visible global function definition for 'cor'
>>>    cv: no visible global function definition for 'sd'
>>>    ratio.mean.sdhat.sd: no visible global function definition for 'sd'
>>>    ratio.mean.vhat.var: no visible global function definition for 'var'
>>>    ratio.sd: no visible global function definition for 'sd'
>>>    ratio.var: no visible global function definition for 'var'
>>>    varn: no visible global function definition for 'var'
>>>    Undefined global functions or variables:
>>>      cor sd var
>>>    Consider adding
>>>      importFrom("stats", "cor", "sd", "var")
>>>    to your NAMESPACE file.✔  checking Rd files ... ✔  checking Rd
>>> metadata ... ✔  checking Rd line widths ... ✔  checking Rd
>>> cross-references ... ✔  checking for missing documentation entries ...
>>> ✔  checking for code/documentation mismatches (562ms)✔  checking Rd
>>> \usage sections (661ms)✔  checking Rd contents ... ✔  checking for
>>> unstated dependencies in examples ... ✔  checking installed files from
>>> 'inst/doc'W  checking files in 'vignettes' ...
>>>    Files in the 'vignettes' directory newer than same file in
>>> 'inst/doc':
>>>      'Brief-Overview.Rmd'✔  checking examples (573ms)─  checking
>>> examples with --run-donttest ... [24s] OK (24.7s)✔  checking for
>>> unstated dependencies in vignettes ... ✔  checking package vignettes
>>> in 'inst/doc' ...✔  checking re-building of vignette outputs (6.8s)✔
>>> checking for non-standard things in the check directory ...✔  checking
>>> for detritus in the temp directory
>>>
>>>    See
>>>      'C:/Users/boos/Dropbox/My PC
>>> (boos-home)/Desktop/dennis/R.packages/Monte.Carlo.se.Rcheck/00check.log'
>>>    for details.
>>>
>>>    ── R CMD check results
>>> ───────────────────────────────────────────────────────────────────────────────────
>>> Monte.Carlo.se 0.1.1 ────
>>> Duration: 51.5s
>>> ❯ checking files in 'vignettes' ... WARNING
>>>   Files in the 'vignettes' directory newer than same file in 'inst/doc':
>>>     'Brief-Overview.Rmd'
>>> ❯ checking dependencies in R code ... NOTE
>>>   Namespace in Imports field not imported from: 'stats'
>>>     All declared Imports should be used.
>>> ❯ checking R code for possible problems ... NOTE
>>>   boot.se: no visible global function definition for 'sd'
>>>   boot.var: no visible global function definition for 'var'
>>>   corr: no visible global function definition for 'cor'
>>>   cv: no visible global function definition for 'sd'
>>>   ratio.mean.sdhat.sd: no visible global function definition for 'sd'
>>>   ratio.mean.vhat.var: no visible global function definition for 'var'
>>>   ratio.sd: no visible global function definition for 'sd'
>>>   ratio.var: no visible global function definition for 'var'
>>>   varn: no visible global function definition for 'var'
>>>   Undefined global functions or variables:
>>>     cor sd var
>>>   Consider adding
>>>     importFrom("stats", "cor", "sd", "var")
>>>   to your NAMESPACE file.
>>> 0 errors ✔ | 1 warning ✖ | 2 notes ✖
>>> Error: R CMD check found WARNINGs
>>> Execution halted
>>>
>>> Exited with status 1.
>>>
>>>
>>>
>>>
>>>
>>> On Sat, Apr 1, 2023 at 5:34 PM Duncan Murdoch <murdoch.duncan using gmail.com>
>>> wrote:
>>>
>>>> On 31/03/2023 4:51 p.m., Dennis Boos wrote:
>>>> > Recently I got a message from CRAN that my package Monte.Carlo.se (on
>>>> CRAN
>>>> > for the last few years) does not pass current testing.  There seemed
>>>> > to
>>>> be
>>>> > 2 problems:
>>>> >
>>>> >
>>>> ***************************************************************************************************************
>>>> >
>>>> > 1. * checking LazyData ... NOTE
>>>> >    'LazyData' is specified without a 'data' directory
>>>> >
>>>> > I have this line in my DESCRIPTION file:
>>>> >
>>>> > LazyData: true
>>>> >
>>>> > Should I remove that?
>>>> >
>>>> >
>>>> *****************************************************************************************************************
>>>> >
>>>> > 2. * checking examples with --run-donttest ... [42s/42s] ERROR
>>>> > Running examples in ‘Monte.Carlo.se-Ex.R’ failed
>>>> > The error most likely occurred in:
>>>> >
>>>> >> pairwise.se(hold,xcol=10:12,summary.f=cv)
>>>> > Error: object 'hold' not found
>>>> > Execution halted
>>>> >
>>>> >
>>>> ***************************************************************************************
>>>> >
>>>> > So, I put in the R code to generate the data matrix *hold.  *But that
>>>> > brought a host of other errors when checking in Rstudio with
>>>> >
>>>> >>
>>>> devtools::check("S:/Documents/srcis/a.projects/Monte.Carlo.isr.and.package/Monte.Carlo.se.March.2023")
>>>> >
>>>> > I started seeing the following list about standard functions like sd.
>>>> >
>>>> > N  checking R code for possible problems (3.4s)
>>>> >     boot.se: no visible global function definition for 'sd'
>>>> >     boot.var: no visible global function definition for 'var'
>>>> >     corr: no visible global function definition for 'cor'
>>>> >     cv: no visible global function definition for 'sd'
>>>> >     ratio.mean.sdhat.sd: no visible global function definition for
>>>> > 'sd'
>>>> >     ratio.mean.vhat.var: no visible global function definition for
>>>> > 'var'
>>>> >     ratio.sd: no visible global function definition for 'sd'
>>>> >     ratio.var: no visible global function definition for 'var'
>>>> >     varn: no visible global function definition for 'var'
>>>> >     Undefined global functions or variables:
>>>> >       cor sd var
>>>> >     Consider adding
>>>> >       importFrom("stats", "cor", "sd", "var")
>>>> >     to your NAMESPACE file.
>>>> >
>>>> > But you can't add those functions to NAMESPACE. Well I did but
>>>> >
>>>> > devtools::build()
>>>> >
>>>> >
>>>> > gets rid of it. Also, I keep getting the message in the Rstudio check
>>>> >
>>>> > WARNING
>>>> >     'qpdf' is needed for checks on size reduction of PDFs
>>>> >
>>>> >
>>>> > but I got the latest versions of R and Rstudio and was able to get
>>>> > qpdf to install and loaded with library(qpdf), but Rstudio still
>>>> > gives
>>>> > that message.
>>>> >
>>>>
>>>> It sounds as though you're using Roxygen2 to generate your NAMESPACE
>>>> file.  If so, you need @imports directives in the comments
>>>> (conventionally before the function that uses the import, but I think
>>>> it
>>>> doesn't really matter where).
>>>>
>>>> Duncan Murdoch
>>>>
>>>>
>>>
>>> --
>>> Dennis Boos                      email: dennis_boos using ncsu.edu
>>> Department of Statistics    Phone: 919-515-1918
>>> NC State University           Fax: 919-515-1169
>>> Raleigh, NC 27695-8203   http://www4.stat.ncsu.edu/~boos
>>>
>>> Aim for kindness, tolerance, and humility.
>>>
>>> 	[[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