#author("2022-09-02T14:42:57+09:00","external:moriat","moriat") #author("2022-09-02T16:55:54+09:00","external:moriat","moriat") #topicpath ** R のパッケージ依存性 [#sadb65dc] *** はじめに [#a1c3e09f] - 問題点~ debian を含む各ディストリビューションでは、それぞれ、チューンされたパッケージを提供している。例えば、r-cran-stars とか。~ ところが、提供されていないパッケージを [[CRAN>https://cran.r-project.org/]] から導入しようとするとき、同時に、他のパッケージが導入されることがある。~ すると、2通りでインストールされたパッケージの間で、依存性の問題が発生する。 -- 症例~ > library(stars) 要求されたパッケージ abind をロード中です 要求されたパッケージ sf をロード中です Linking to GEOS 3.7.1, GDAL 2.4.0, PROJ 5.2.0 エラー: package or namespace load failed for ‘stars’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]): 名前空間 ‘rlang’ 0.3.1 は既にロードされましたが、>= 0.4.10 が要求されています - 対策~ まずは、R にインストールされているパッケージの間の依存関係を調べることが必要になる。 *** パッケージの依存関係などを調べる方法 [#w1e28f5d] + library()~ インストールされているパッケージの一覧を表示してくれる。~ ~ + tools パッケージ~ このパッケージはインストールする必要がない。はじめから入っている。 -- available.packages()~ CRAN にあるパッケージ情報のリスト作成 library(tools) all_pkg <- available.packages() head(all_pkg) -- package_dependencies()~ 依存関係などを調べる。逆引きもできる。 package_dependencies(packages = "ggplot2", all_pkg, which = "Depends") package_dependencies(packages = "ggplot2", all_pkg, which = "Depends", reverse = TRUE) 今回の場合、"all" で、情報を得ることができる。これらのパッケージが怪しい。 > package_dependencies(packages = "rlang", all_pkg, which = "all") $rlang [1] "utils" "cli" "covr" "crayon" "fs" "glue" [7] "knitr" "magrittr" "methods" "pillar" "rmarkdown" "stats" [13] "testthat" "tibble" "usethis" "vctrs" "withr" "winch" ※ 結局、これらを使っても、結果的に試行錯誤である。stars を使うために、rlang で引っかかっていた~ 問題は、pillar tidyr tidyselect といったパッケージを削除することで対応できた。 + switchr パッケージ~ 使えそうだが、今後の課題。