初期環境

session_info()
## Session info --------------------------------------------------------------
##  setting  value                       
##  version  R version 3.2.2 (2015-08-14)
##  system   x86_64, linux-gnu           
##  ui       X11                         
##  language ja                          
##  collate  ja_JP.UTF-8                 
##  tz       <NA>                        
##  date     2015-11-02
## Packages ------------------------------------------------------------------
##  package   * version    date       source                         
##  devtools  * 1.9.1      2015-09-11 CRAN (R 3.2.2)                 
##  digest      0.6.8      2014-12-31 CRAN (R 3.2.0)                 
##  evaluate    0.8        2015-09-18 CRAN (R 3.2.2)                 
##  formatR     1.2.1      2015-09-18 CRAN (R 3.2.2)                 
##  htmltools   0.2.6      2014-09-08 CRAN (R 3.2.0)                 
##  knitr       1.11       2015-08-14 CRAN (R 3.2.2)                 
##  magrittr    1.5        2014-11-22 CRAN (R 3.2.0)                 
##  memoise     0.2.1      2014-04-22 CRAN (R 3.2.0)                 
##  rmarkdown   0.8.1      2015-10-10 CRAN (R 3.2.2)                 
##  stringi     1.0-1      2015-10-22 CRAN (R 3.2.2)                 
##  stringr     1.0.0.9000 2015-05-20 Github (hadley/stringr@13849b4)
##  yaml        2.1.13     2014-06-12 CRAN (R 3.2.0)
search()
##  [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
##  [4] "package:grDevices" "package:utils"     "package:datasets" 
##  [7] "package:devtools"  "package:methods"   "Autoloads"        
## [10] "package:base"

パッケージを読み込んでattachする

# {dplyr}のNamespaceを読み込む
loadNamespace("dplyr")
## <environment: namespace:dplyr>
# 読み込んでるけどattachされてない
# なので関数名だけではみつけきれない
isNamespaceLoaded("dplyr")
## [1] TRUE
search()
##  [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
##  [4] "package:grDevices" "package:utils"     "package:datasets" 
##  [7] "package:devtools"  "package:methods"   "Autoloads"        
## [10] "package:base"
# Namespaceにattachしてみる
attachNamespace("dplyr")
# これで関数名で使える
search()
##  [1] ".GlobalEnv"        "package:dplyr"     "package:stats"    
##  [4] "package:graphics"  "package:grDevices" "package:utils"    
##  [7] "package:datasets"  "package:devtools"  "package:methods"  
## [10] "Autoloads"         "package:base"
head(select(iris,starts_with("Se")))
##   Sepal.Length Sepal.Width
## 1          5.1         3.5
## 2          4.9         3.0
## 3          4.7         3.2
## 4          4.6         3.1
## 5          5.0         3.6
## 6          5.4         3.9

パッケージをdetachしてみる

# detachされたけど、デフォルトではunloadされない
detach("package:dplyr")
search()
##  [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
##  [4] "package:grDevices" "package:utils"     "package:datasets" 
##  [7] "package:devtools"  "package:methods"   "Autoloads"        
## [10] "package:base"
isNamespaceLoaded("dplyr")
## [1] TRUE
# detachでunloadを指示
attachNamespace("dplyr")
search()
##  [1] ".GlobalEnv"        "package:dplyr"     "package:stats"    
##  [4] "package:graphics"  "package:grDevices" "package:utils"    
##  [7] "package:datasets"  "package:devtools"  "package:methods"  
## [10] "Autoloads"         "package:base"
detach("package:dplyr", unload = TRUE)
#これでunloadまで完了
search()
##  [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
##  [4] "package:grDevices" "package:utils"     "package:datasets" 
##  [7] "package:devtools"  "package:methods"   "Autoloads"        
## [10] "package:base"
isNamespaceLoaded("dplyr")
## [1] FALSE

getNamespace()を試す

getNamespace("dplyr")
## <environment: namespace:dplyr>
search()
##  [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
##  [4] "package:grDevices" "package:utils"     "package:datasets" 
##  [7] "package:devtools"  "package:methods"   "Autoloads"        
## [10] "package:base"
isNamespaceLoaded("dplyr")
## [1] TRUE

getNamespace()loadNamespace()の違いは今後の課題ということで。

unloadNamespace()を試す

unloadNamespace("dplyr")
isNamespaceLoaded("dplyr")
## [1] FALSE

“::”のテスト

# loadNamespace("dplyr")を指定なくてもloadして実行する
head(dplyr::select(iris,starts_with("Se")))
##   Sepal.Length Sepal.Width
## 1          5.1         3.5
## 2          4.9         3.0
## 3          4.7         3.2
## 4          4.6         3.1
## 5          5.0         3.6
## 6          5.4         3.9
search()
##  [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
##  [4] "package:grDevices" "package:utils"     "package:datasets" 
##  [7] "package:devtools"  "package:methods"   "Autoloads"        
## [10] "package:base"
isNamespaceLoaded("dplyr")
## [1] TRUE

つまり、“::”を使うと、そのパッケージをloadしてメモリに置き、実行する。そしてunloadするまでは残ったまま。

でもattachしてないので、関数名だけで呼び出してつかえない。

参考資料のメモ