[Bioc-devel] Interpreting BiocCheck output

Henrik Bengtsson henr|k@bengt@@on @end|ng |rom gm@||@com
Fri Oct 7 21:49:02 CEST 2022


I'm throwing in another 1 cent.

I agree that utils::globalVariables() is risky; since it goes in the
root of the package code, it applies to *all* functions in the
package, which is a bit too broad of a stroke for my taste.  The way I
deal with false globals from non-standard evaluation (NSE), is to
declare them a as dummy variables local to the function.  In this
case, I would use:

myfcn <- function() {
  ## To please R CMD check
  mpg <- cyl <- NULL

  mtcars |> select(mpg, cyl) |> head(3)
}


ADVANCED:

To avoid those dummy assignments from taking place in every call, one
can also do:

myfcn <- local({
  ## To please R CMD check
  mpg <- cyl <- NULL

  function() {
    mtcars |> select(mpg, cyl) |> head(3)
  }
})

which is also a bit cleaner, because it keeps the original function body as-is.


REALLY ADVANCED:
If you want to be fancy, you can even protect against mistakes by using:

myfcn <- local({
  ## To please R CMD check
  mpg <- cyl <- NULL

  ## Prevent developer mistakes
  lapply(names(environment()), function(name, envir) {
    delayedAssign(
      name,
      stop(sprintf("INTERNAL ERROR: %s is not declared",
sQuote(name)), call. = FALSE),
      assign.env = envir
    )
  }, envir = environment())

  function() {
    mtcars |> select(mpg, cyl) |> head(3)
  }
})

The latter would throw an error, if you actually end up using 'mpg' or
'cyl' in a non-NSE way.

/Henrik

On Fri, Oct 7, 2022 at 12:29 PM Martin Morgan <mtmorgan.bioc using gmail.com> wrote:
>
> Just my two cents, but I don’t think using `globalVariables()` is a good idea in a package – it’s too easy to say that R should ignore a variable that it should not.
>
> In the context of dplyr, the alternative is to `importFrom dplyr .data` or to use ‘standard’ evaluation, depending on circumstance
>
>
> > mtcars |> as_tibble() |> filter(.data$mpg > 30)  # .data is imported, so known…
> # A tibble: 4 × 11
>     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
> 1  32.4     4  78.7    66  4.08  2.2   19.5     1     1     4     1
> 2  30.4     4  75.7    52  4.93  1.62  18.5     1     1     4     2
> 3  33.9     4  71.1    65  4.22  1.84  19.9     1     1     4     1
> 4  30.4     4  95.1   113  3.77  1.51  16.9     1     1     5     2
> > mtcars |> select("mpg", "cyl") |> head(3)  # `”mpg”` and `”cyl”` are character vectors, not symbols…
>                mpg cyl
> Mazda RX4     21.0   6
> Mazda RX4 Wag 21.0   6
> Datsun 710    22.8   4
>
> Martin
>
> From: Bioc-devel <bioc-devel-bounces using r-project.org> on behalf of Marcel Ramos <marcel.ramosperez using roswellpark.org>
> Date: Friday, October 7, 2022 at 3:07 PM
> To: bioc-devel using r-project.org <bioc-devel using r-project.org>
> Subject: Re: [Bioc-devel] Interpreting BiocCheck output
> Hi Giulia,
>
> Thanks for sharing.
> I took a look at https://github.com/calabrialab/ISAnalytics and I'm glad
> you resolved the issue.
>
> Just a reminder, you can also use `utils::globalVariables('.')` in your
> package for functions
> that use `'.'` (and other symbols) as a variable, e.g. in `purrr::pmap`.
>
> Best regards,
>
> Marcel
>
>
> On 10/6/22 4:34 AM, Giulia Pais wrote:
> >
> > Hi, thanks for the reply. I managed to fix the first error as it was a
> > minor issue in the code, while for the second one I don’t have a
> > solution since the problem appears only locally and not on Biconductor
> > after the build.
> >
> > Just for reference the package is ISAnalytics and the BiocCheck
> > version is the latest one.
> >
> > Thanks again,
> >
> > Giulia
> >
> > *From: *Bioc-devel <bioc-devel-bounces using r-project.org> on behalf of
> > Marcel Ramos <marcel.ramosperez using roswellpark.org>
> > *Date: *Wednesday, 2022October5 at 23:48
> > *To: *bioc-devel using r-project.org <bioc-devel using r-project.org>
> > *Subject: *Re: [Bioc-devel] EXTERNAL: Interpreting BiocCheck output
> >
> > Hi Giulia,
> >
> > Are you using a recent version of BiocCheck?
> >
> > If so, check the bottom of the BiocCheck::BiocCheck():
> >
> > ---
> > See the <packageName>.BiocCheck folder and run
> >      browseVignettes(package = 'BiocCheck')
> > for details.
> > ---
> >
> > Can you provide more details, e.g., the repository of the package?
> >
> > Thanks.
> >
> > Best regards,
> >
> > Marcel
> >
> > On 10/4/22 4:44 AM, Giulia Pais wrote:
> > > Hello,
> > > I�m having some issues in interpreting BiocCheck outputs, maybe
> > someone can tell me how to fix the issues.
> > >
> > > I�ve got 2 main issues that cause the check to fail after normal
> > CRAN check has passed:
> > >
> > >    1.  I get this error message
> > >
> > > * Checking if other packages can import this one...
> > >
> > >      * ERROR: Packages providing 2 object(s) used in this package
> > should be imported in the NAMESPACE file, otherwise packages importing
> > >
> > >        this package may fail.
> > >
> > >
> > >
> > > However it is nowhere mentioned which packages they are and where
> > those objects are instantiated so I have no clue how to solve this one
> > >
> > >    1.  Since previous version of the package, which built and passed
> > checks without issues, I�ve been using a custom *.Rmd file placed in
> > inst/rmd in the vignette to recycle the same chunk of code and
> > optimizing time in phase of update (I update info only once instead of
> > 4 times). Even if the package passes CRAN checks, BiocCheck errors
> > telling me it can�t find this Rmd file and therefore can�t evaluate
> > the chunk where it is mentioned. Any suggestion on this?
> > >
> > > Thanks in advance
> > > Giulia
> > >
> > >        [[alternative HTML version deleted]]
> > >
> > >
> > > _______________________________________________
> > > Bioc-devel using r-project.org mailing list
> > > https://stat.ethz.ch/mailman/listinfo/bioc-devel
> > <https://secure-web.cisco.com/1BHJN2d_YaqvKQMHULUaRH7QNYQJdOhBmii2EQbiAbqa5Lkeb8i3hiUIfaWofD4P7qtrIBd4DMzICkiL7nxBM9QffrsbPxL3_kbkQFAg-yuAopFfphrSrtxM2B2Z0qp-DcUG2pechJ5QE0wfC6p5VsjrRr4nhPCl3WjsqZcBETYfmUItDeY_Br3CVecmoCk5k1gglA7riYZaVCfjP1NsjpliHO07urMoNlQIYYEyGXtdcZP0VSYaKiMgyYU41JtU_ZqKBSRUTtRknaIU5cZSeS6gHT4j4gobUCm1A0EVQToHkI-c8MgdgesyootE6ZRVht1uNPHivzeujJGoWsZJUQA/https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fbioc-devel>
> >
> >
> > This email message may contain legally privileged and/or...{{dropped:2}}
> >
> > _______________________________________________
> > Bioc-devel using r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/bioc-devel
> > <https://secure-web.cisco.com/1BHJN2d_YaqvKQMHULUaRH7QNYQJdOhBmii2EQbiAbqa5Lkeb8i3hiUIfaWofD4P7qtrIBd4DMzICkiL7nxBM9QffrsbPxL3_kbkQFAg-yuAopFfphrSrtxM2B2Z0qp-DcUG2pechJ5QE0wfC6p5VsjrRr4nhPCl3WjsqZcBETYfmUItDeY_Br3CVecmoCk5k1gglA7riYZaVCfjP1NsjpliHO07urMoNlQIYYEyGXtdcZP0VSYaKiMgyYU41JtU_ZqKBSRUTtRknaIU5cZSeS6gHT4j4gobUCm1A0EVQToHkI-c8MgdgesyootE6ZRVht1uNPHivzeujJGoWsZJUQA/https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fbioc-devel>
> >
>
> This email message may contain legally privileged and/or...{{dropped:4}}
>
> _______________________________________________
> Bioc-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioc-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel



More information about the Bioc-devel mailing list