【R】defaultPackages 以外の全てのパッケージを detach する【Tip】

| 0件のコメント

R で `getOption(“defaultPackages”)` + {base}パッケージ 以外の全てのパッケージを detach するTip。

Rセッション開始時の `sessionInfo()` は以下。

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.12.1 (Sierra)

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.3.1

一方、`getOption(“defaultPackages”)` で取得できるパッケージは以下。getOption() 自体が {base}パッケージ に含まれるためか base は出力されなかった。

> getOption("defaultPackages")
[1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"  

`getOption(“defaultPackages”)` + {base}パッケージ 以外の全てのパッケージを detach してみる。

{dplyr} を読み込んだ後の `sessionInfo()` を確認すると dplyr が attach されていることがわかる。

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.12.1 (Sierra)

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dplyr_0.5.0

loaded via a namespace (and not attached):
[1] magrittr_1.5   R6_2.2.0       assertthat_0.1 DBI_0.5-1      tools_3.3.1    tibble_1.2    
[7] Rcpp_0.12.7   

読み込んだパッケージが増えてくると逐一 `base::detach` で detach していくのは大変なので以下のように関数化しておくと便利。detach all packages while working in R を参考にさせて頂いた。

detach_all <- function() {
  basic.pkg <- c("package:stats", "package:graphics", "package:grDevices", 
    "package:utils", "package:datasets", "package:methods", "package:base")

  pkg.list <- search()[ifelse(unlist(gregexpr("package:", search())) == 1 ,TRUE, FALSE)]

  pkg.list <- setdiff(pkg.list, basic.pkg)

  lapply(pkg.list, detach, character.only = TRUE)
}

search() で得られたベクトルから "package:" を含む要素を抽出し, `getOption("defaultPackages")` で得られるパッケージに {base}パッケージ を加えた要素との集合の差分に対して lapply で一気に detach する。

実行後の状態が以下。

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.12.1 (Sierra)

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] magrittr_1.5   R6_2.2.0       assertthat_0.1 DBI_0.5-1      tools_3.3.1    tibble_1.2    
[7] Rcpp_0.12.7   

コメントを残す

必須欄は * がついています