7.3 بسته

خیلی از افراد توابعی که برای پروژه‌های شخصی خود نوشته‌اند را به صورت بسته (Package) اختیار دیگران قرار داده‌اند.

  • بسته‌های نصب شده
Code
.packages(all.available = T)
 [1] "Rcpp"         "base"         "boot"        
 [4] "class"        "cluster"      "codetools"   
 [7] "compiler"     "datasets"     "foreign"     
[10] "graphics"     "grDevices"    "grid"        
[13] "KernSmooth"   "lattice"      "MASS"        
[16] "Matrix"       "methods"      "mgcv"        
[19] "nlme"         "nnet"         "parallel"    
[22] "rpart"        "spatial"      "splines"     
[25] "stats"        "stats4"       "survival"    
[28] "tcltk"        "tools"        "translations"
[31] "utils"
  • مسیر بسته‌های نصب شده
Code
.libPaths()
[1] "C:/Users/User/AppData/Local/R/win-library/4.3"
[2] "C:/Program Files/R/R-4.3.1/library"

7.3.1 نصب بسته

برای استفاده از توابع توسعه داده شده توسط دیگران، باید بسته مربوطه آن تابع را نصب نماییم:

  • دانلود و نصب بسته‌ها از مخزن کِرَن (CRAN)
Code
install.packages("dplyr")
  • نصب از مخزن گیت‌هاب (Github)

ابتدا باید یکی از بسته‌های remotes یا devtools را نصب و سپس بسته مورد نظر را با یکی از روش زیر نصب نمایید.

Code
remotes::install_github("tidyverse/dplyr")
# or
devtools::install_github("tidyverse/dplyr")
  • دانلود از مخازن دیگر
    • مخزن بیت باکت (Bitbucket) با تابع install_bitbucket()
    • مخزن گیت جنریک (Generic git) با تابع install_git()

7.3.2 بارگذاری بسته

  • library("package"): تمام توابع موجود در یک پکیج را در محیط کاری آپلود می‌کند، اگر بسته نصب نباشد خطا (Error) برمی‌گرداند:
Code
library("alaki")
Error in library("alaki") : there is no package called ‘alaki’
  • require("package"): تمام توابع موجود در یک پکیج را در محیط کاری آپلود می‌کند، اگر بسته نصب نباشد غلط (FALSE) برمی‌گرداند:
Code
require("alaki")
Loading required package: alaki
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, ... :
  there is no package called ‘alaki’
Code
(require("alaki"))
[1] FALSE
Code
if (!require("alaki")) install.packages("alaki")
  • package::function(): این روش فقط برای مواقعی است که به صورت محلی می‌خواهیم تابع خاصی از یک پکیج را استفاده کنیم و دیگر به آن نیازی نداریم.
Code
dplyr::select(iris, c("Sepal.Width", "Species"))
    Sepal.Width    Species
1           3.5     setosa
2           3.0     setosa 
3           3.2     setosa
4           3.1     setosa
...         ...     ...

7.3.3 بسته‌های پرکاربرد

  • Tidyverse
Code
library(tidyverse)
── Attaching packages ────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5     ✓ purrr   0.3.4
✓ tibble  3.1.6     ✓ dplyr   1.0.8
✓ tidyr   1.2.0     ✓ stringr 1.4.0
✓ readr   2.1.2     ✓ forcats 0.5.1
── Conflicts ─────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

این بسته متشکل از بسته‌های معروفی همچون ggplot، tidyr، dplyr، readr، stringr و … است.