Menu

R Paketleri: install.packages(), library() ve CRAN

R paketleri nasıl çalışır: install.packages() ile CRAN'den kurulum, library() ile yükleme, require() ile library() farkı, pkg::fun() ve bilmeye değer paketler.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Paket Nedir

Paket, R'yi genişleten fonksiyonlar, dokümantasyon ve bazen veriden oluşan bir demettir. Temel R size vektörleri, modelleri ve grafikleri verir; paketler ise diğer her şeyi verir - ve o "diğer her şey" devasadır. CRAN (Comprehensive R Archive Network) kabaca 20.000 paket barındırır ve her biri yayımlanmadan önce CRAN'in gönderim testlerinden geçirilir. O depo, R'nin veri işlerinde rekabetçi kalmasının başlıca nedenidir: analiz ne olursa olsun, birileri muhtemelen onu paketlemiştir.

CRAN tek kaynak değildir - Bioconductor biyoinformatik ekosistemini barındırır ve geliştirilmekte olan pek çok paket GitHub'da yaşar (remotes::install_github() ile kurulabilir) - ama yeni başlayan biri olarak CRAN'i varsayılan, diğerlerini ise bir README size söylediğinde karşılaşacağınız şeyler olarak görebilirsiniz.

Birkaç paket R'nin kendisiyle birlikte gelir (stats, utils, graphics ve arkadaşları) ve otomatik yüklenir - mean() ve plot() fonksiyonlarının doğrudan çalışmasının nedeni budur. Diğer her şey aşağıdaki iki adımlı ritüeli izler.

install.packages() Bir Kez, library() Her Oturumda

Bu, yeni başlayanlar arasındaki bir numaralı karışıklıktır; o yüzden mümkün olduğunca net söyleyelim. Bir paketi çalışır hâle getirmek, iki farklı ömrü olan iki farklı eylemdir:

install.packages("dplyr")   # ONCE per machine: downloads from CRAN and installs
library(dplyr)              # EVERY session: loads it so your code can use it
  • install.packages("dplyr") bir kitap satın almak gibidir: bir kez yaparsınız ve o andan itibaren rafınızda (diskinizde) durur. Tırnaklara dikkat edin - ismi bir metin olarak geçiriyorsunuz.
  • library(dplyr) kitabı raftan almak gibidir: her R oturumunun başında (pratikte her betiğin en üstünde) yaparsınız. Burada tırnak gerekmez - library() özeldir ve yalın ismi kabul eder (tutarlılığı tercih ederseniz library("dplyr") da çalışır).

İki başarısızlık biçimi hangi adımı atladığınızı size söyler. library() kaynaklı Error: there is no package called 'dplyr' mesajı, paketin hiç kurulmadığı anlamına gelir. Bir betiğin ortasındaki Error: could not find function "filter" (ya da "%>%") ise paketin kurulu olduğu ama bu oturumun onu hiç yüklemediği anlamına gelir. Her library() çağrısını betiğin en tepesine koymak - betiğe serpiştirmek yerine - ikinci hatayı ilk saniyede görünür kılar ve aynı zamanda betiğin bağımlılık listesi görevi görür. tidyverse kurmak da aynı şekilde çalışır: bir kez install.packages("tidyverse"), oturum başına library(tidyverse); bu tek satır dplyr, ggplot2 ve çekirdek kümenin geri kalanını yükler.

Yapmamanız gereken şey, install.packages() çağrısını tekrar tekrar çalıştırdığınız ya da paylaştığınız bir betiğin içinde bırakmaktır - her çalıştırmada yeniden indirir ve onu çalıştıran kişiyi şaşırtabilir. Kurulum bir konsol eylemidir; yükleme bir betik eylemidir.

require() ve pkg::fun()

require(), library() ile eşanlamlı görünür ve onu böyle yanlış kullanmak yaygındır. Fark, paket eksik olduğunda ne olduğudur: library() hatayla durur; require() bir uyarı yazdırır, FALSE döndürür ve betiğin devam etmesine izin verir - genellikle dürüst "no package called" mesajı yerine yirmi satır sonra kafa karıştırıcı bir "could not find function" ile ölmek üzere. Bağımlılıkları yüklemek için library() kullanın: en üstte yüksek sesle başarısız olmak bir özelliktir. require() yalnızca dönüş değerinin asıl mesele olduğu koşullu kontrollerde ekmeğini çıkarır:

if (!require(praise)) {
    install.packages("praise")
    library(praise)
}

Bir paketi hiç yüklemeden kullanmanın da bir yolu vardır: :: operatörü bir fonksiyonu tam adresiyle çağırır, package::function(). Paketin kurulu olması gerekir, ama oturumunuza hiçbir şey eklenmez:

(stats zaten otomatik yüklenir, dolayısıyla düz sd() de çalışır - ama söz dizimi kurulu her paket için aynıdır.) :: iki yerde parlar: tam bir library() satırının aşırı kaçtığı tek seferlik çağrılar ve yüklü iki paketin aynı ismi dışa aktardığı durumlarda belirsizliği gidermek - dplyr::filter() ile stats::filter() klasik çakışmadır.

Paketleri Güncel Tutmak

Paketler R'den bağımsız evrilir, dolayısıyla güncelleme size düşer:

update.packages()          # offers to update everything outdated
update.packages(ask = FALSE)   # same, without prompting per package

Bariz olmayan bir kural: paketler R'nin belirli bir major.minor sürümüne karşı derlenir. R'nin kendisini yükselttiğinizde (diyelim ki 4.3'ten 4.4'e - bkz. R kurulumu) eski paket kitaplığınız genellikle taşınmaz ve çözüm, kullandığınız paketleri yeni sürüm altında yeniden kurmaktan ibarettir. On dakikalık install.packages(), felaket değil - ama betikleri taze bir R kurulumunu bir duvar dolusu "no package called" hatasıyla karşıladığında insanları ilk seferinde şaşırtır.

Elinizde Ne Olduğunu Görmek

Üç fonksiyon "ne kurulu ve nerede" sorusunu yanıtlar:

installed.packages()[, "Version"]   # every installed package with its version
sessionInfo()                       # R version + what THIS session has loaded
.libPaths()                         # the folders where packages are installed

installed.packages(), paket başına bir satır içeren bir matris döndürür - genellikle istediğiniz şey Version sütunudur. sessionInfo() yeniden üretilebilirlik aracıdır: çıktısını bir hata raporuna yapıştırın; okur R sürümünüzü, işletim sisteminizi ve yüklü her paketin tam sürümünü öğrenir. .libPaths(), R'nin aradığı kitaplık klasörlerini gösterir; var olduğunu bilmek "o paket gerçekte nereye gitti?" sorusunun ve paylaşılan makinelerde yönetici haklarının neden bazen önemli olduğunun gizemini çözer.

Bilmeye Değer Paketler

Bunlara bugün ihtiyacınız yok, ama onlarla sürekli karşılaşacaksınız - her birinin ne işe yaradığını bilmek başkalarının kodunu okumanıza yardım eder:

  • dplyr - veri düzenleme fiilleri: filter, mutate, group_by, summarize.
  • ggplot2 - standart grafik paketi; çevrimiçi gördüğünüz R grafiklerinin çoğu ggplot2'dur.
  • tidyr - veriyi geniş ve uzun biçimler arasında yeniden şekillendirme (pivot_longer, pivot_wider).
  • readr / readxl - sırasıyla hızlı CSV okuma ve Excel dosyası okuma.
  • lubridate - beklediğiniz gibi davranan tarihler.
  • stringr - tutarlı metin işleme.
  • data.table - alternatif, yüksek performanslı bir veri çerçevesi ekosistemi; tidyverse'ten farklı bir lehçe, büyük veride çok sevilir.
  • shiny - tamamen R ile yazılmış etkileşimli web uygulamaları.

İlk altısı tidyverse'ün çekirdeğidir ve install.packages("tidyverse") ile birlikte gelir. Hiçbirini kullanma zorunluluğunuz yok - temel R hepsini yapabilir - ama modern R kodunun çoğu bu ekosistemde yaşar.

Buradan Ne Çıkarıyorsunuz

  • CRAN yaklaşık 20.000 denetlenmiş paket barındırır; Bioconductor ve GitHub gerisini kapsar.
  • install.packages("name") makine başına bir kez (tırnak gerekli); library(name) oturum başına bir kez, betiğin en üstünde.
  • library() yüksek sesle başarısız olur - iyi; require() FALSE döndürür - yalnızca kontrollerin içinde işe yarar.
  • pkg::fun(), paketi eklemeden tek bir fonksiyon kullanır ve isim çakışmalarını çözer.
  • update.packages() her şeyi güncel tutar; büyük bir R yükseltmesi paketleri yeniden kurmak demektir.
  • sessionInfo(), kodunuzun tam olarak neyin üzerinde çalıştığını birine (ya da gelecekteki size) söyleme biçiminizdir.

Sırada: çalışma dizini - R'nin dosyaları nerede aradığı ve veri okuma başarısız olduğunda neden ilk kontrol edilecek şey olduğu.

Sıkça Sorulan Sorular

R'de bir paketi nasıl kurarım?

Paket adını tırnak içinde vererek install.packages("name") çalıştırın, ör. install.packages("dplyr"). R onu CRAN'den indirir ve makinenize kurar. Bunu makine başına yalnızca bir kez yaparsınız - sonrasında her oturumda library(dplyr) ile yüklersiniz.

install.packages() ile library() arasındaki fark nedir?

install.packages("dplyr") paketi bilgisayarınıza indirir - makine başına bir kez. library(dplyr) ise zaten kurulu bir paketi mevcut oturuma yükler - oturum başına bir kez, genellikle her betiğin en üstünde. Yüklemeden kurmak size kullanılabilir hiçbir şey vermez; kurmadan yüklemek "there is no package called 'dplyr'" hatası verir.

R'de library() ile require() arasındaki fark nedir?

İkisi de bir paketi yükler, ama başarısızlıkta library() hatayla durur, require() ise yalnızca uyarır ve FALSE döndürür. Bu, library() fonksiyonunu betikler için doğru kılar - yüksek sesle ve erken başarısız olun - require() ise yalnızca if (!require(pkg)) install.packages(pkg) gibi koşullu kontrollerde işe yarar.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA