ディフェンシブRプログラミング
Dr. Colin Gillespie
Jumping Rivers
.GlobalEnv ですls() を使いますn
# それとも欲しかったのは
N
library() はこのパッケージの箱に直接アクセスしますlibrary("dplyr") は dplyr のエクスポート関数に直接アクセスします## 238 exported functions
getNamespaceExports("dplyr")
:: で関数に直接アクセスできます## dplyr の filter 関数
dplyr::filter
## filter() 関数
stats::filter()
dplyr::filter()
filter() とだけ打つと、どちらが呼ばれますか?search() で確認できますsearch()
# [1] ".GlobalEnv" "package:dplyr" "package:stats"
# <Other packages>
名前空間の衝突は厄介なだけではありません
conflicted パッケージは、関数の選択を明示的にします
library("conflicted")
library("dplyr")
filter
#Error: [conflicted] `filter` found in 2 packages.
#Either pick the one you want with `::`
# * dplyr::filter
# * stats::filter
#Or declare a preference with `conflict_prefer()`
# * conflict_prefer("filter", "dplyr")
# * conflict_prefer("filter", "stats")
ディフェンシブRプログラミング