I have an R package on github which uses multiple Bioconductor dependencies, 'myPackage'

If I include CRAN packages in the DESCRIPTION via Depends:, the packages will automatically install upon installation via devtools, i.e.


This is discussed in Section 1.1.3 Package Dependencies, in Writing R Extensions

Is there a way to streamline this such that packages from Bioconductor are automatically installed as well?

Normally, users install Bioconductor packages via BiocLite, e.g.

  • 1
    $\begingroup$ Note that as of Bioconductor release 3.8 onwards, bioconductor packages are installed with BiocManager::install() which can be installed from CRAN $\endgroup$
    – Tom Kelly
    Apr 19 '19 at 15:05

There's a trick to this where one needs to add biocViews: to the package Description. That's the only solution I've ever seen to allowing automatic installation of bioconductor dependencies. If you need a couple of examples, then click through the link I posted and scroll down to pull requests referencing that issue, they will generally include the actual example.

  • $\begingroup$ I didn't find the examples in the pull requests you mentioned. However, I did search the github mirror on CRAN. There are DESCRIPTION files with a lone biocViews: line before Depends:. Others include tags, like biocViews: Infrastructure, RNA $\endgroup$ Jan 22 '18 at 19:32
  • $\begingroup$ Maybe we should post an example DESCRIPTION so it's absolutely clear to future biohackers how this is done...this news needs to spread! $\endgroup$ Jan 22 '18 at 19:57
  • 2
    $\begingroup$ You don't need anything after biocViews:, that alone suffices (see ?devtools::package_deps). $\endgroup$
    – Devon Ryan
    Jan 22 '18 at 20:14

As suggested, here’s an example showing the relevant lines from a DESCRIPTION file from a CRAN/GitHub hosted project that has Bioconductor dependencies (truncated):

    R (>= 3.3.0)

The relevant bit is the empty biocViews: declaration, which allows the Bioconductor dependency {snpStats} to be automatically installed.


I have a counter example to other answers. BiocViews is not needed to install Bioconductor dependencies on CRAN. I have a package on CRAN that suggests Bioconductor packages and they are found without using BiocViews.

If you are installing a package from github and it has dependencies on Bioconductor you can use directly BiocManager::install("user/package") and it will use remotes::install_github internally and pull also packages from Bioconductor (from the right release).

BiocViews is/was used to detect that a package is for Bioconductor by remotes, devtools and sessioninfo among other packages that help the development and testing of packages. In addition Bioconductor doesn't add a Repository: Bioconductor on the provided DESCRIPTION field of the packages, while CRAN adds Repository: CRAN.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.