Přeskočit na obsah

R6 balíček do R

Z Wikipedie, otevřené encyklopedie

Balíčky pro R se používají k rozšíření funkcionality a usnadnění práce s daty. R6 je jedním z těchto balíčků, který poskytuje implementaci zapouzdřeného objektově orientovaného programování (někdy také označovaného jako klasické objektově orientované programování) v R.

Tento přístup umožňuje pracovat s objekty, kde přístup k datům a jejich modifikace probíhají prostřednictvím metod, spíše než přímým přístupem k interním proměnným. R6 je navržen tak, aby uživatelům umožnil efektivně využívat objektově orientované principy, čímž zjednodušuje práci s komplexními datovými strukturami a kódem.

Hlavní vlastnosti balíčku R6

[editovat | editovat zdroj]

V balíčku R6 jsou objekty implementovány tak, že obsahují veřejné metody a skryté interní proměnné, které nejsou přístupné z vnějšku bez použití těchto metod. R6 je podobný referenčním třídám v R, ale je efektivnější, protože nezávisí na třídách S4 a balíčku methods. Díky tomu má menší nároky na paměť a procesorový čas. To vede k lepšímu výkonu při práci s velkými nebo složitými objekty.[1]

Použití balíčku R6

[editovat | editovat zdroj]

Balíček R6 umožňuje:

  • Pracovat s objekty, které si uchovávají svůj stav a tento stav se může měnit v průběhu času.
  • Vytvářet složitější objektové struktury s podporou dědičnosti a zapouzdření.
  • Zefektivnit práci s objekty, aniž by se při každé úpravě vytvářely nové kopie.[2]

R6 třídy

[editovat | editovat zdroj]

Třídy R6 mají několik výhod oproti jiným přístupům:

  1. Lehčí než S4: Jsou efektivnější a vyhýbají se některým problémům spojeným s používáním S4, na kterém jsou referenční třídy v R založeny.
  2. Referenční sémantika: Na rozdíl od mnoha objektů v R mají objekty třídy R6 referenční sémantiku, chovají se tedy jako reference. To umožňuje sdílení a modifikaci dat mezi objekty bez vytváření jejich kopií.
  3. Podpora veřejných a soukromých metod: Umožňuje kontrolu přístupu k interním datům a funkcím objektu.
  4. Aktivní vazby: Umožňují automatické výpočty hodnot na základě změn v jiných objektech nebo proměnných.
  5. Dědičnost: Podporuje vytváření hierarchií tříd, které mohou fungovat napříč různými balíčky v R, což usnadňuje opětovné použití a rozšiřování kódu.

Historie a kontext

[editovat | editovat zdroj]

Autorem balíčku R6 je Winston Chang. Název R6 vychází z humoristického odkazu na systémy tříd S3 a S4. Když byly představeny referenční třídy v R, někteří uživatelé je neformálně nazvali R5. Tento název nebyl oficiální, balíček R6 však navazuje na tuto tradici.

R5 byl také kódovým označením pro jiný systém objektů, který měl řešit některé problémy s S4 týkající se syntaxe a výkonu. Větev R5 však byla po počáteční fázi vývoje zastavena a nikdy nebyla zveřejněna.

Práce s balíčkem R6

[editovat | editovat zdroj]

Instalace balíčku

[editovat | editovat zdroj]

Instalaci provádíme pomocí následujícího příkazu:

install.packages("R6")

Načtení balíčku

[editovat | editovat zdroj]

Načtení balíčku provádíme pomocí:

library(R6)

Vytvoření třídy

[editovat | editovat zdroj]

Zde je příklad vytvoření jednoduché třídy Dog:

Dog <- R6Class("Dog",
     public = list(
     name = NULL,
     initialize = function(name) {
      self$name <- name
      },
     bark = function() {
           cat(self$name, "says: Woof!\n")
   }
 )
)

Vytvoření a práce s instancí třídy

[editovat | editovat zdroj]

Vytvoření instance a použití metody bark:

my_dog <- Dog$new(name = "Buddy")
my_dog$bark()

# Výstup: Buddy says: Woof!

Tento příklad ukazuje základní třídu Dog s jedním polem name a jednou metodou bark,která vypíše jednoduchou zprávu.[3][4]

  1. Encapsulated Classes with Reference Semantics. r6.r-lib.org [online]. [cit. 2024-08-12]. Dostupné online. (anglicky) 
  2. Introduction. r6.r-lib.org [online]. [cit. 2024-08-12]. Dostupné online. (anglicky) 
  3. R6/vignettes/Introduction.Rmd at 507867875fdeaffbe7f7038291256b798f6bb042 · r-lib/R6. GitHub [online]. [cit. 2024-08-12]. Dostupné online. (anglicky) 
  4. Object-Oriented Programming (OOP) in R with R6 - The Complete Guide. www.appsilon.com [online]. [cit. 2024-08-12]. Dostupné online. (anglicky)