I implemented Berrys function.

I works fine when limma is pre-installed.

When Limma is üre-installed, I get the following Note:


"Package suggested but not available for checking: 'limma'".


Seems like the functions isnt installing limma.

Is there something I am missing? I added BiocManager and limma to the suggests 
and utils to Imports.


Regards,

Sergej

________________________________
Von: Ruff, Sergej
Gesendet: Samstag, 18. März 2023 09:56:55
An: Berry Boessenkool; Simon Urbanek
Cc: r-package-devel@r-project.org
Betreff: AW: [R-pkg-devel] How to declare Bioconductor Dependencies in the 
Description File of my R Package


thank you, berry for your idea.

________________________________
Von: Berry Boessenkool <berryboessenk...@hotmail.com>
Gesendet: Samstag, 18. März 2023 09:54:45
An: Ruff, Sergej; Simon Urbanek
Cc: r-package-devel@r-project.org
Betreff: Re: [R-pkg-devel] How to declare Bioconductor Dependencies in the 
Description File of my R Package


I would use conditional returns to make the code more readable (see below) and 
then run the examples conditionally.

check_limma <- function() # Returns TRUE if available, FALSE otherwise
{
  if(requireNamespace("limma", quietly=TRUE)) return(TRUE)
  if(!interactive()) return(FALSE)
  inst <- menu(c("Yes", "No"), title="Package {limma} required but not 
installed.\nDo you want to install it now?")
  if(inst != 1)
    {
    message("To run this example, first install {limma} following the 
directions at 'https://bioconductor.org/packages/limma'")
    return(FALSE)
    }
  # the following could be wrapped in try and conditionally return TRUE / FALSE
  if(!requireNamespace("BiocManager", quietly=TRUE)) 
install.packages("BiocManager", quiet=TRUE)
  BiocManager::install("limma", update=FALSE, ask=FALSE, quiet=TRUE)
  return(TRUE)
}

# In the examples:
if(check_limma()){
group = gl(2, n)
design = model.matrix(~ group)
fit1 = limma::lmFit(X, design)
fit = limma::eBayes(fit1)
}

My 2 cents 🙂

Berry

-------------------------------------

________________________________
From: R-package-devel <r-package-devel-boun...@r-project.org> on behalf of 
Ruff, Sergej <sergej.r...@tiho-hannover.de>
Sent: Friday, March 17, 2023 22:29
To: Simon Urbanek <simon.urba...@r-project.org>
Cc: r-package-devel@r-project.org <r-package-devel@r-project.org>
Subject: Re: [R-pkg-devel] How to declare Bioconductor Dependencies in the 
Description File of my R Package

thank,


I was wondering if my idea regarding the implementation is correct.


I took the idea from Tiago Olivoto and wrote an additional function that checks 
if limma is installed.


Here is a mockup based on Tiago�s package:


check_limma<- function(){
  if(!requireNamespace("limma", quietly = TRUE)) {
    if(interactive() == TRUE){
      inst <-
        switch(menu(c("Yes", "No"), title = "Package {limma} required but not 
installed.\nDo you want to install it now?"),
               "yes", "no")
      if(inst == "yes"){
        if(!requireNamespace("BiocManager", quietly = TRUE)) {
          install.packages("BiocManager", quiet = TRUE)
        }
        BiocManager::install("limma",
                             update = FALSE,
                             ask = FALSE,
                             quiet = TRUE)
      } else{
        message("To run this example}, first install {limma} following the 
directions at 'https://bioconductor.org/packages/limma'")
      }
    }
  }
}

I would add the check in my example before limma functions are used.


### Differential expression analysis with limma

check_limma()
group = gl(2, n)
design = model.matrix(~ group)
fit1 = limma::lmFit(X, design)
fit = limma::eBayes(fit1)

I tried running the R CMD Check but I keep getting 1 error and note.
Is the implementation incorrect?

regards, Sergej


________________________________
Von: Simon Urbanek <simon.urba...@r-project.org>
Gesendet: Freitag, 17. M�rz 2023 22:05:00
An: Ruff, Sergej
Cc: Duncan Murdoch; Martin Morgan; Ivan Krylov; r-package-devel@r-project.org
Betreff: Re: [R-pkg-devel] How to declare Bioconductor Dependencies in the 
Description File of my R Package

Packages can only be installed from the repositories listed and only CRAN is 
the default so only CRAN package are guaranteed to work. I'd like to add that 
the issue below is exactly why, personally, I would not recommend using 
Bioconductor package as strong dependency (imports/depends), because that makes 
the package unusable for most users, as it cannot be installed (without extra 
steps they don't know about) since the dependency doesn't exist on CRAN.

If your users are already Bioconductor users by the virtue of the package 
application then they already know so it's fine, but then you are probably 
better off to have your package on Bioconductor as part of the ecosystem which 
is much more streamlined and coordinated.

If it is only suggested (weak dependency) for some optional functionality, then 
your package will work even if the dependency is not installed so all is well. 
And if the optional Bioconductor functionality is used you can direct the user 
to instructions explaining that Bioconductor is required for that - but the 
package has to do that, it is not anything automatic in R.

Cheers,
Simon


> On Mar 18, 2023, at 1:29 AM, Ruff, Sergej <sergej.r...@tiho-hannover.de> 
> wrote:
>
> Really.Whats a problem i have when all dependencies arent prei installed. I 
> thought the problem would be solved once my package is available on CRAN.
>
>
> Here is a recent question I had regarding the same issue:
>
>
> I am currently working on a r-package. I would like to submit my r package to 
> CRAN, but I have a question regarding dependency installations on CRAN.
>
> I have almost finished my package, added the required dependencies to the 
> NAMESPACE and DESCRIPTION files as Imports, and get no errors or warnings
>
> when running the check in Rstudio. The package runs on the pc, where I�ve 
> built the package, but when I install the package on a pc, where the 
> dependencies
>
> are not preinstalled, I get the following error:
>
> ERROR:
>
> dependencies 'depth', 'geometry' are not available for package 'packagename'
> * removing 
> 'C:/Users/156932/AppData/Local/Programs/R/R-4.2.1/library/packagename'
> Warning in install.packages : installation of package �packagename� had 
> non-zero exit status
>
>
> The problem is that a local installation of my package (via USB-stick for 
> example) can�t install the dependencies from CRAN.
>
> The package works perfectly fine, if the dependencies are preinstalled.
>
> Now I don�t want to submit my package to CRAN if the end user gets the same 
> error message when installing my package.
>
> Question: After I submit my package to CRAN, will CRAN install dependencies 
> automatically (via "install.packages()"), resolving the issue I have right 
> now?
>
> Or do I have to modify the R-package or the Description-file to make sure my 
> Package can install dependencies?
>
> I provided the dependencies to the NAMESPACE-file as @ImportFrom via the 
> devtools::document()-function. I added the dependencies to the 
> DESCRIPTION-file via usethis::use_package("x",type="Imports"). The 
> Description looks like this:
>
> License: GPL (>= 3)
> Encoding: UTF-8
> LazyData: true
> RoxygenNote: 7.2.3
> Imports:
>    depth,
>    geometry,
>    graphics,
>    grDevices,
>    MASS,
>    mvtnorm,
>    nlme,
>    rgl,
>    stats
>
>
>
> So I thought all dependencies would install automatically from CRAN? Is that 
> not the case?
>


        [[alternative HTML version deleted]]


        [[alternative HTML version deleted]]

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to