Rlang – Tek Satırda Çoklu Paket Yönetimi

R programlama dilinde paket yönetimi için library ve require fonksiyonları her paket için ayrı ayrı tanımlanmak durumundadır.

library(package, help, pos = 2, lib.loc = NULL,
        character.only = FALSE, logical.return = FALSE,
        warn.conflicts = TRUE, quietly = FALSE,
        verbose = getOption("verbose"))
 
require(package, lib.loc = NULL, quietly = FALSE,
        warn.conflicts = TRUE,
        character.only = FALSE)

Bir kaç paket için sorun olmayan bu durum paket sayısına pararlel düzeyde sıkıntı oluştabilmekte.

library(dplyr)
library(ggplot2)
library(RMySQL)
library(data.table)
...

Bu yazıda, sorundan müzdarip bir şekilde çözüm yolu arayışında karşılaştığım alternatiflerden bahsedeceğim.

Lapply

Liste ve vector boyunca bir fonksiyonun uygulanması işlevine sahip olan lapply ile belirttiğiniz paketleri tek satır üzerinden aktifleştirebilirsiniz. Fonksiyonun temel kullanımı şu şekilde:

Lapply(.x, .f, ...)

.x: Vektör
.f: Uygulanacak fonksiyon
: .f için uygulanacak ek opsiyonel argümanlar

Lapply kullanımına dair bir örnek oluşturmak gerekirse aynı satır üzerinden devtools ve grid paketlerini indirebiliriz.

lapply(c("devtools", "grid"), require, character.only = TRUE)

Komut sonrasında alacağınız dönüş şu şekilde olacaktır:

lapply(c("devtools", "grid"), require, character.only = TRUE)
Loading required package: devtools
Loading required package: grid
[[1]]
[1] TRUE
 
[[2]]
[1] TRUE

Eğer aktifleştireceğiniz paket yüklü (install.packages) değilse False dönüşü alırsınız.

lapply(c("arutil", "googleformr"), require, character.only = TRUE)
Loading required package: arutil
Loading required package: googleformr
[[1]]
[1] TRUE
 
[[2]]
[1] FALSE
 
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘googleformr’

pacman

Pacman R paket yönetim sürecini oldukça kolaylaştıran oldukça başarılı paketlerden biri. p_load fonksiyonuyla birlikte tek satır üzerinden çoklu paket yükleme ve aktifleştirme işlemlerini yürütebilmekte. Yukarıdaki lapply örneğinde karşılaştığımız, tanımlanan paketin yüklü olmaması durumunda false dönüşü yerine paketin indirip aktifleştirilmekete. pacman ve barındırdığı fonksiyonlarla ilgili daha geniş bilgiye buradan ulaşabilirsiniz. Fonksiyon kullanımlarını ise şu şekilde örneklendirebiliriz.

library(pacman)
pacman::p_load(dplyr, psych, tm) # ön tanımlı kullanım
p_load_gh("Dasonk/githubSearch", "trinker/regexr", "hadley/httr@v0.4") # github üzerinden paket edinimi

lubripack

Bir diğer alternatif paket ise lubripack. Paket işlev olarak belirtilen paketler yüklü ise aktifleştirmekte, yüklü olmayan paketleri yükleyerek kullanıma hazır hale getirmekte. Aktif olarak geliştirilmeyen, ancak kaynak kodlarını github sayfasın üzerinden görüntüleyerek geliştirmeye devam edebileceğiniz pakete buradan ulaşabilirsiniz.

library(devtools)
devtools::install_github("espanta/lubripack")
library(lubripack)
lubripack("anytime", "animation", "adabagL", silent = FALSE)

easypackages

Her paketi library fonsiyonuyla ilişkili olarak aktifleştiren, sahip olunmayan paketlerin de yüklenmesini sağlayan easypackages paketi libraries ve packages fonksiyonları üzerinden yönetilebilmekte. Daha detaylı bilgi için github sayfasını inceleyebilirsiniz. İndirme ve kullanımına dair örnekler ise şu şekilde:

install.packages("easypackages")
library(easypackages)
libraries("dplyr", "ggplot2")
paketlerim <- c("RMySQL", "Rdatatable/data.table")
packages(paketlerim)

R Dili Hakkındaki Yazılardan Haberdar Olmak İster Misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

Leave a Reply