Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

renvとBiocMangerで開発者版R環境を整備する

More than 1 year has passed since last update.

R/Bioconductorでパッケージを開発する際には、開発者版のR(R-devel)で動作確認することが推奨されているが(大して守ってないが)、R-develを入れると、これまで使っていたRが使えなくなるため、どのように環境を分けるのかという問題がいつもあった。

以前は、R/Bioconductor開発者のための開発環境の構築のように、R-develが入ったDockerコンテナを作るというやり方を考えたが(実際は大して使ってないが)、ここでは最近renvというパッケージが、バージョン管理に関係しているというのと、BiocManagerがインストールするパッケージのBioCのバージョン管理をしている話しがあったので、これらを組みわせて、BioCのRelease/Devel両方を手元のマシンで同時に扱えるか調べた。

ただし、結論から言うと、うまくいかなかった。

renvはRのプロジェクト毎のバージョン管理をしているだけで、

pyenv local [Pythonのバージョン]

みたいに、R言語のバージョン自体を管理するものではないらしい。

以下、作業した内容。

準備

まず、release/develのディレクトリを用意した。

mkdir release
mkdir devel

次に、remotes, BiocManager, renvをインストールしておいた。

install.packages(c("remotes", "BiocManager"),
    repos="http://cran.r-project.org")
remotes::install_github("rstudio/renv")

releaseディレクトリ内で

まず、release内部でRを起動して、以下を実行した。

renv::init()
renv::snapshot()

パッケージの場所は、以下のようなところにある。

.libPaths()
# [1] "/Users/koki1/Desktop/release/renv/library/R-3.6/x86_64-apple-darwin15.6.0"
# [2] "/private/var/folders/xw/00wshg996txb26ltmrgk8qtr0000gn/T/Rtmp9Hza8c/renv-system-library"

標準パッケージだけが入っている状態らしい。

system(paste0("ls ", .libPaths()[2]))
# KernSmooth    base        cluster     datasets    graphics    methods     nnet        spatial     stats4      tools
# MASS      boot        codetools   foreign     grid        mgcv        parallel    splines     survival    utils
# Matrix        class       compiler    grDevices   lattice     nlme        rpart       stats       tcltk

ここで、Bioc3.10でリリースされたscTGIFパッケージをインストールしてみる。

なお、renvのGitHubにIssueが立っているように、そもそもrenvは以下のようにoptionを設定しないと、BioCパッケージを入れられないらしい。

options(repos = BiocManager::repositories())
BiocManager::install(version="3.10")
BiocManager::valid() 
BiocManager::install("scTGIF")

develディレクトリ内で

途中まではreleaseの時と同様の作業をした。

renv::init()

renv::snapshot()

.libPaths()
# [1] "/Users/koki1/Desktop/devel/renv/library/R-3.6/x86_64-apple-darwin15.6.0"
# [2] "/private/var/folders/xw/00wshg996txb26ltmrgk8qtr0000gn/T/RtmpbXDLVK/renv-system-library"

options(repos = BiocManager::repositories())
BiocManager::install(version="devel")
# エラー: Bioconductor version '3.11' requires R version '4.0'; see
#   https://bioconductor.org/install
options(repos = BiocManager::repositories(version = "devel"))
# エラー: Bioconductor version '3.11' requires R version '4.0'; see
#   https://bioconductor.org/install

ここで、Rの4.0を入れろと怒られて終わった。

どうやら、このやり方で、Devel版のBioCパッケージをインストールできるのは、4月の半ばから10月の半ばだけらしい。

https://www.bioconductor.org/developers/how-to/useDevel/

よく知らなかったが、R言語は年に一度のアップデートなのに対して、BioCは半年に一回のアップデートのため、R言語もアップデートする際には、次のRのバージョンで動作確認するために、R-develを入れろということらしい。

なお、pyenv, pipenv, rbenvのように、R自体のバージョンを管理するものとしては、Renv(renvではない)というものが過去にあったらしいが、もう7,8年メンテナンスされていないのと、

.Renv/versions

以下に、特定のバージョンのRのソースを置いて、手作業でコンパイルしておいてくださいという方針がめんどくさいので使ってない。
結局、いいやり方は見つからなかったので、ひたすらR-develだけを使うマシンとかを決めておいて使うぐらいの方が手間がないかも。

antiplastics
書くぜーどんどん書くぜー(書いてない
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away