การเขียน R แบบ Defensive Programming
Dr. Colin Gillespie
Jumping Rivers
.GlobalEnvls() เพื่อดูเนื้อหาn
# or did I want
N
library() ให้เข้าถึงกล่องแพ็กเกจได้โดยตรงlibrary("dplyr") ให้เข้าถึงฟังก์ชันที่ export ออกมาใน 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>
การชนกันของ namespace ไม่ใช่แค่ความยุ่งยาก
แพ็กเกจ 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 แบบ Defensive Programming