R (programovací jazyk)

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání
R
Logo
Vývojář R Development Core Team
Aktuální verze 3.5.1 (2. července 2018)
Operační systém multiplatformní
Vyvíjeno v C, Fortran a R
Typ softwaru prostředí pro statistickou analýzu a zobrazení dat
Licence GNU General Public License
Web www.r-project.org
Některá data mohou pocházet z datové položky.

R je programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení. Jde o implementaci programovacího jazyka S pod svobodnou licencí. Protože je zdarma, R již předstihlo počtem uživatelů komerční S a stalo se faktickým standardem v řadě oblastí statistiky.

Funkce prostředí R lze rozšířit pomocí knihoven označovaných jako balíčky (packages). Pro verzi 3.4 jich bylo v červenci roku 2017 v centrálním repozitáři CRAN k dispozici přibližně 11 000. Příkladem často používaného balíčku je ggplot2 pro zobrazení dat.

R se používá z příkazového řádku, existuje však několik frontendů s grafickým rozhraním jako RKWard, RStudio, R Commander nebo rozšíření do OpenOffice.org Calcu R4Calc.

R bývá také propojováno či využíváno v komerčních softwarech, např. v prostředí SPSS mohou uživatelé přímo psát a spouštět programy v jazyce R nad otevřenými daty.

Statistické funkce[editovat | editovat zdroj]

R poskytuje širokou škálu statistických a grafických technik včetně lineárního a nelineárního modelování, klasických statistických testů, analýzy časových řad, shlukování a dalších. R je snadno rozšiřitelný pomocí funkcí a balíčků a R komunita je známá jejich aktivní aktualizací. Mnoho standardních funkcí R je psáno v samotném jazyku R, což usnadňuje uživatelům sledovat provedené algoritmické změny. Pro výpočetně náročné úlohy lze kód propojit s jazyky C, C++ a Fortran a zavolat je v době běhu. Pokročilí uživatelé mohou využívat jazyky C, C++, Java, .NET nebo Python k přímé manipulaci R objektů.

R je vysoce rozšiřitelný pomocí balíčků vytvořených samotnými uživateli obsahující konkrétní funkce, nebo využitelné v určitých oblastech studia. Díky svému dědictví z jazyka S má R silnější objektově orientované programování než většina ostatních statistických počítačových jazyků. Rozšíření R je také zjednodušeno díky využití lexikálních pravidel.

Další silnou stránkou R je statická grafika, která umí produkovat grafy vhodné do vědeckých publikací zahrnující např. i matematické symboly. Dynamická a interaktivní grafika je dostupná prostřednictvím dalších balíčků[1].

R má svůj vlastní formát dokumentace podobný LaTeXu, který nahrazuje kompletní dokumentaci, a to jak on-line, tak v mnoha formátech a v tištěné podobě.

Programovací funkce[editovat | editovat zdroj]

R je interpretovaný jazyk, k němuž uživatelé obvykle přistupují pomocí příkazového řádku (interpret). Pokud uživatel zadá " 2 +2 " do příkazového řádku R a potvrdí stisknutím klávesy enter, odpovědí počítače bude " 4 ", jak je uvedeno níže:

> 2 + 2
[1 ] 4

Tento výpočet je interpretován jako součet dvou jednoelementových vektorů, jehož výsledkem je také jednoelementový vektor. Předpona [1] označuje, že seznam prvků, které následují na stejném řádku, začíná prvním prvkem vektoru (funkce, která je užitečná, když je výstup na více řádků).

Stejně jako jiné podobné jazyky, jako je APL a MATLAB, R podporuje matice. Datová struktura programovacího jazyka R zahrnuje vektory, matice, datové rámce (podobné tabulkám v relační databázi) a listy. Rozšiřitelný objekt – systém R zahrnuje objekty pro (mimo jiné): regresní modely, časové řady a geo-prostorové souřadnice. Skalární datový typ nebyl nikdy implementován jako datová struktura v R, skaláry jsou zde reprezentovány jako vektory s délkou jedna[2].

R podporuje procedurální programování s funkcemi, a pro některé funkce objektově orientované programování s generickými funkcemi. Generické funkce se chovají odlišně v závislosti na typu přidaných argumentů. Jinými slovy generická funkce deleguje operaci na funkci (metodu) specifickou pro daný typ třídy a objektu. Např. R má generickou funkci "print ()", která umožňuje vytisknout téměř každý druh objektu s jednoduchou syntaxí "print(jméno-objektu)".

I když je R využíváno především jako nástroj pro statistické výpočty a analýzy, může být využit také pro všeobecné výpočty s maticemi s výkonností srovnatelnou s GNU Octave nebo MATLAB.

Příklady[editovat | editovat zdroj]

Základní syntaxe[editovat | editovat zdroj]

Následující příklady ilustrují základní syntaxi jazyka a použití příkazového řádku R.

V R je široce preferovaný operátor pro přiřazení tvořící šipku ze dvou znaků "<-", ačkoli "=" může být obvykle použito taktéž[3].

Diagnostické grafy vytvořené funkcí plot.lm(). Vlevo dole je vidět i možnost použití matematických symbolů v popiscích os.
> x <- c(1,2,3,4,5,6) # Vytvoří uspořádaný soubor (vektor)
> y <- x^2 # Spočte druhé mocniny prvků x
> print(y) # vypíše (vytiskne) y
[1] 1 4 9 16 25 36
> mean(y) # Spočte aritmetický průměr prvků vektoru y; výsledkem je skalár
[1] 15.16667
> var(y) # Spočte rozptyl souboru
[1] 178.9667
> lm_1 <- lm(y ~ x) # Nafituje lineární regresi podle vztahů "y = f(x)" nebo "y = B0 + (B1 * x)"
                        # uloží výsledky jako lm_1
> print(lm_1) # Vytiskne model (objekt lineárního modelu) lm_1

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept) x
     -9.333        7.000

> summary(lm_1) # Spočte a vypíše statistiku pro regresi
                         # objektu lineárního modelu lm_1

Call:
lm(formula = y ~ x)

Residuals:
1 2 3 4 5 6
3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) -9.3333 2.8441 -3.282 0.030453 *
x 7.0000 0.7303 9.585 0.000662 ***
---
Signif. codes: 0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 3.055 on 4 degrees of freedom
Multiple R-squared: 0.9583,	Adjusted R-squared: 0.9478
F-statistic: 91.88 on 1 and 4 DF, p-value: 0.000662

> par(mfrow=c(2, 2)) # Nastaví rozložení grafu 2×2
> plot(lm_1) # Diagnostické vykreslení regresního modelu

Mandelbrotova množina[editovat | editovat zdroj]

"Mandelbrot.gif" – Na tento obrázek stačilo v tomto příkladu díky jazyku R pouze 14 řádek kódu.

Tento příklad, vykreslující Mandelbrotovu množinu, demonstruje:

  • Využití externích knihoven (packages), v tomto případě caTools package
  • Manipulaci s komplexními čísly
  • Vícerozměrné pole čísel používaných jako základní datový typ, viz proměnné C, Z a X.
library(caTools) # Externí balík obsahující funkci write.gif
jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F",
                                 "yellow", "#FF7F00", "red", "#7F0000"))
m <- 1200 # definuje velikost
C <- complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ),
              imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C <- matrix(C,m,m) # převede na čtvercovou matici komplexních čísel
Z <- 0 # inicializuje Z jako 0
X <- array(0, c(m,m,20)) # inicializuje výstupní 3D pole
for (k in 1:20) { # cyklus s dvaceti průběhy
  Z <- Z^2+C             # klíčová rovnice měnící hodnotu Z
  X[,,k] <- exp(-abs(Z)) # záznam výsledku
}
write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=1000)

Funkce[editovat | editovat zdroj]

Jednoduchost vytváření funkcí je jednou z nejsilnějších možností využití R. Návratová hodnota lokální funkce může mít jakýkoliv datový typ.

functionname <- function(arg1, arg2, ... ){ # deklarace funkce (jménem a argumenty)
statements # deklarace příkazů
return(object) # deklarace datového typu objektu
}

Balíčky[editovat | editovat zdroj]

Schopnosti R jsou rozšířeny pomocí tzv. balíčků vytvořených samotnými uživateli, které umožňují využití specializovaných statistických nástrojů, grafického zobrazení (např. ggplot2), nástrojů na import / export dat, pro tvorbu reportů (knitr, Sweave), atd. Tyto balíčky jsou vyvíjeny především v jazyku R, někdy však také v Javě, C nebo Fortranu.

Součástí instalace R je sada základních balíčků a dalších více než 11 000 dalších (k červenci 2017) je k dispozici na webových stránkách Comprehensive R Archive Network (CRAN)[4], Bioconductor[5], Omegahat[6], GitHub a dalších úložištích. Pro verzi 2.10 jich bylo v červenci 2009 v centrálním repozitáři CRAN k dispozici pouze okolo 2 000[7].

"Task Views"[8] – na internetových stránkách CRAN jsou vytvořeny manuály seskupující balíčky podle možného typu aplikace (např. finance, genetika, medicínské zobrazování, sociální vědy nebo prostorová analýza). FDA označila R jako vhodné také pro interpretaci dat z klinického výzkumu.

Další balíčky pro R můžeme najít také na stránkách Crantastic[9], komunitního webu pro kontrolu a hodnocení všech balíčků CRAN a R-Forge[10], centrální platformy pro spolupráci na vývoji balíčků R, softwarů souvisejících s R a dalších projektů. R-Forge obsahuje také mnoho nepublikovaných beta balíčků a vývojové verze balíčků CRAN.

Projekt Bioconductor poskytuje balíčky R pro analýzu genomických dat, jako Affymetrix a nástroje pro zpracování a analýzu cDNA microarray dat a začal poskytovat také nástroje pro analýzu dat z nové generace vysoce výkonných sekvenčních metod.

Další specializované a samostatně stojící balíčky lze nalézt volně na internetu nebo na univerzitních stránkách – pro výzkum fylogeneze a evoluce pomocí (nejen) genetických dat např. ape, pegas, Geneland[11], Phyloch[12] nebo ParallelStructure[13]. Reprodukovatelný výzkum a automatické generování reportů může být provedeno s balíčky, které podporují využití kódu R implementovaného do LaTeXu, OpenDocument formátu atd.

Milníky[editovat | editovat zdroj]

Kompletní seznam změn najdete v NEWS souboru, vybrané milníky jsou uvedeny níže.

  • Verze 0.16 – Poslední alfa verze vyvinutá společností "Ihaka and gentleman". Většina základních funkcí pochází z tzv. "Bílé knihy" (viz jazyk S). Mailing konference byla spuštěna 1. dubna 1997.
  • Verze 0.49 (23. dubna 1997) – Jedná se o nejstarší verzi v CRAN repozitáři, která však byla přístupná pouze pro Unixové platformy. Alfa verze R pro Microsoft Windows a Mac OS byla spuštěna krátce po této verzi. CRAN repozirář byl tohoto data spuštěn se 3 zrcadly, které zpočátku hostovaly 12 balíčků.
  • Verze 0.60 (05.12.1997) – R se stalo oficiální součástí projektu GNU. Kód je hostován a udržován na CVS.
  • Verze 1.0.0 (29. února 2000) – Podle vývojářů dostatečně stabilní pro produkční využití.
  • Verze 1.4.0 (19. prosince 2001) – Implementovány S4 metody a první verze pro Mac OS X je k dispozici.
  • Verze 2.0.0 (4. října 2004) – Přidáno tzv. "lazy loading", které umožňuje rychlé načtení dat s minimálním zatížením paměti systému.
  • Verze 2.1.0 (18. dubna 2005) – Podpora kódování UTF-8, a počátky internacionalizace a lokalizace pro různé jazyky.
  • Verze 2.11.0 (22. dubna 2010) – Podpora pro Windows 64-bitové systémy.
  • Verze 2.13.0 (14. dubna 2011) – Přidání nové funkce kompilátoru, která umožňuje zrychlení funkcí pomocí převedení do byte code.
  • Verze 2.14.0 (31. října 2011) – Přidány povinné "namespaces" u balíčků. Přidán nový balíček parallel.
  • Verze 2.15.0 (30. března 2012) – Nová load balancing funkce a zvýšená rychlost serializace pro dlouhé vektory.
  • Verze 3.0.0 (03. dubna 2013) – Podpora pro číselné hodnoty indexu 231 a větších na 64-bitových systémech.

Rozhraní[editovat | editovat zdroj]

Grafické uživatelské rozhraní (GUI)[editovat | editovat zdroj]

  • RKWard – rozšiřitelné GUI a vývojové prostředí (IDE) pro R.
  • RStudio – multiplatformní open-source IDE (který může také být spuštěn na vzdáleném linux server).
  • Deducer – GUI pro analýzu dat (podobně jako SPSS / JMP / Minitab).
  • Java GUI pro R – multiplatformní nezávislý terminál R a editor založený na Javě (také známý jako JGR).
  • Rattle GUI – multiplatformní open-source GUI založené na RGtk2 ( R pro Gimp Tool Kit).
  • R Commander – multiplatformní GUI založeném na tcltk.
  • RExcel – propojení aplikace Microsoft Excel s jazykem R. Doplněk umožňující využívat R pro analýzu dat uložených v Excelu.[14]
  • RGUI – přichází s pre-zkompilovanou verzí R pro Microsoft Windows.
  • RWe – umožňuje využití schopnosti dolování dat ve Weka a statistických analýz v R.
  • Tinn-R – open-source program zahrnující i vývojové prostředí se zvýrazněním syntaxe, podobně jako např. u MATLAB. K dispozici je však pouze pro Windows.
  • R Tools for Visual Studio – plugin pro Visual Studio, který umožňuje využití s jazyka R.

Skriptovací jazyky[editovat | editovat zdroj]

Funkce R byly zpřístupněny v několika skriptovacích jazycích jako je Python (balíček RPY), Perl (modul Statistics::R), Ruby (knihovna RSRuby), a F# (R Typ Provider). Skriptování samotné je možné prostřednictvím front-endu s příkazovou řádkou Littler, nebo např. pomocí RDEMO.

useR! konference[editovat | editovat zdroj]

Oficiální mezinárodní setkání uživatelů R nese název "useR!".

První useR! konference byla uspořádána v květnu roku 2004 ve Vídni. Po jednoletém vynechání (v roce 2005) se další uživatelské konference konají již každoročně, zpravidla střídavě v rámci Evropy a Severní Ameriky.

Další konference:

  • useR! 2006, Vídeň, Rakousko
  • useR! 2007, Ames, Iowa, USA
  • useR! 2008, Dortmund, Německo
  • useR! 2009, Rennes, France
  • useR! 2010, Gaithersburg, Maryland, USA
  • useR! 2011, Coventry, Velká Británie
  • useR! 2012, Nashville, Tennessee, USA
  • useR! 2013, Albacete, Španělsko
  • useR! 2014, Los Angeles, USA
  • useR! 2015, Aalborg, Dánsko
  • useR! 2016, Stanford, Kalifornie, USA
  • useR! 2017, Brusel, Belgie
  • useR! 2018, Brisbane, Austrálie

Srovnání s ostatními statistickými nástroji[editovat | editovat zdroj]

Program R je srovnatelný s dalšími populárními statistickými nástroji jako je SAS, SPSS nebo Stata, avšak na rozdíl od nich je R k dispozici uživatelům bezplatně a využívá licenci svobodného software.

Komerční podpora programu R[editovat | editovat zdroj]

Ačkoliv je R open-source projekt podporovaný komunitou pracující na jeho vývoji, některé komerční společnosti se snaží svým zákazníkům poskytnout technickou podporu nebo určitá rozšíření.

V roce 2007 byla založena firma Revolution Analytics, která poskytuje komerční podporu pro tzv. Revolution R (distribuci R zahrnující komponenty vyvinuté touto společností). Mezi hlavní přidané komponenty patří: ParallelR, R Productivity Environment IDE, RevoScaleR (pro analýzy velkých souborů dat), RevoDeployR, webový servis, a možnost čtení a zápisu dat ve formátu SAS. V roce 2015 společnost Microsoft odkoupila Revolution Analytics a následně implementovala jazyk R do programu Visual Studio 2017.

V roce 2011 společnost Oracle vytvořila systém Big dat Appliance, který integruje R, Apache Hadoop, Oracle Linux a NoSQL databázi s Exadata hardware. Oracle Enterprise R se stalo jedním ze dvou komponent "Oracle Advanced Analytics Option" (druhou složkou je Oracle Data Mining).

K dalšímu komerčnímu software podporující napojení na nebo integraci do R patří: JMP, Mathematica, MATLAB, Pentaho, Spotfire, SPSS, STATISTICA, Platforma Symphony nebo SAS.

TIBCO, současný vlastník S-Plus jazyka, umožňuje svým zaměstnancům, aby aktivně podporovali výzkum s účastí v R-Help mailing listu (viz výše).

Google je velkým uživatelem R a vydává průvodce, sponzoruje výzkum v rámci projektu Summer-of-Code a také finančně podporuje uživatelská setkání.

RStudio nabízí software a služby pro R.

Zdroj[editovat | editovat zdroj]

Přeloženo z: https://en.wikipedia.org/wiki/R_(programming_language)

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. LEWIN-KOH, Nicholas. CRAN Task View: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization. cran.r-project.org. 2015-01-07. Dostupné online [cit. 2018-02-20]. 
  2. Data structures · Advanced R.. adv-r.had.co.nz [online]. [cit. 2018-02-20]. Dostupné online. 
  3. Assignments with the = Operator. developer.r-project.org [online]. [cit. 2018-02-20]. Dostupné online. 
  4. The Comprehensive R Archive Network. cran.r-project.org [online]. [cit. 2018-02-20]. Dostupné online. 
  5. Bioconductor - Home. www.bioconductor.org [online]. [cit. 2018-02-20]. Dostupné online. (anglicky) 
  6. The Omega Project for Statistical Computing. www.omegahat.net [online]. [cit. 2018-02-20]. Dostupné online. 
  7. SMITH, David. R's exponential package growth, ctd.. Revolutions [online]. 2010-01-07 [cit. 2012-12-02]. Dostupné online. 
  8. CRAN Task Views. cran.r-project.org [online]. [cit. 2018-02-20]. Dostupné online. 
  9. It's crantastic!. crantastic.org [online]. [cit. 2018-02-20]. Dostupné online. (anglicky) 
  10. R-Forge: Welcome. r-forge.r-project.org [online]. [cit. 2018-02-20]. Dostupné online. (anglicky) 
  11. Geneland homepage. www2.imm.dtu.dk [online]. [cit. 2018-01-29]. Dostupné online. 
  12. Christoph Heibl -- R resources. www.christophheibl.de [online]. [cit. 2018-01-29]. Dostupné online. 
  13. R-Forge: parallelstructure: R Development Page. r-forge.r-project.org [online]. [cit. 2018-01-29]. Dostupné online. (anglicky) 
  14. RExcel – Propojení Excelu s jazykem R. Kurzy nejen Excelu nejen v Praze - ExcelTown.com - školení, konzultace, návody. Dostupné online [cit. 2018-02-19]. (česky)