R 防禦式程式設計
Dr. Colin Gillespie
Jumping Rivers
.GlobalEnvls()n
# or did I want
N
library() 讓你直接存取這個套件盒library("dplyr") 讓你直接使用 dplyr 中匯出的函式## 238 exported functions
getNamespaceExports("dplyr")
:: 直接呼叫某個函式## The filter function from dplyr
dplyr::filter
## The filter() function
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 防禦式程式設計