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.6.2 jich bylo v lednu roku 2020 v centrálním repozitáři CRAN k dispozici 15 325. 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 a R Commander.

R bývá také propojováno či využíváno v komerčním softwaru, 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.

thumb|Terminálové okno R

Statistické funkce 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í generovat 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ů.

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 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 , odpovědí počítače bude 4, jak je uvedeno níže:

> 2 + 2 : 4

Tento výpočet je interpretován jako součet dvou jednoelementových vektorů, jehož výsledkem je také jednoelementový vektor. Předpona 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.

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ředaných argumentů k němu. Jinými slovy generická funkce odešle funkci specifickou pro daný typ objektu. Např. R má generickou funkci print (), která umožňuje vytisknout téměř každý druh objektu s jednoduchou print(JménoObjektu) syntaxí.

I když je většinou používán statistickými a jinými praktikami, které vyžadují prostředí pro statistické výpočty a vývoj softwaru, R může také fungovat jako výpočetní všeobecná matice – výkonností srovnatelné s GNU Octave nebo MATLAB.

Příklady

Základní syntaxe 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 stejně dobře lze použít=.

náhled|350px|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 4 9 16 25 36 > mean(y) # Spočte aritmetický průměr prvků vektoru y; výsledkem je skalár 15.16667 > var(y) # Spočte rozptyl souboru 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 náhled|350px|Mandelbrot.gif – na tento obrázek stačilo v tomto příkladu díky použití jazyka 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 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 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, práci s daty v duchu filozofie tidy data (balíčky tidyverse, tidymodels), pro tvorbu reportů (knitr, Sweave), jiných způsobů programování (např. R6) atd. Tyto balíčky jsou vyvíjeny především v jazyku R, někdy však také v Javě, C, 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), Bioconductor, Omegahat, 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 ne méně než 2 000.

„Task Views“ () – 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). Americký Úřad pro kontrolu potravin a léčiv (FDA) označil 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, komunitního webu pro kontrolu a hodnocení všech balíčků CRAN a R-Forge, 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, phytools, phyloseq, Phyloch nebo ParallelStructure. 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 Kompletní seznam změn je udržován v NEWS souboru. Některé vlastnosti 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 macOS byla spuštěna krátce po této verzi. CRAN repozitář byl k tomuto datu spuštěn se 3 zrcadly (mirrors), které zpočátku hostovaly 12 balíčků. Verze 0.60 (5. prosince 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; jde o první verze pro macOS. 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 64bitové MS Windows. Verze 2.13.0 (14. dubna 2011) – Přidání nové funkce kompilátoru, která umožňuje zrychlení funkcí pomocí převedení do bajtkódu. 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 (3. dubna 2013) – Podpora pro číselné hodnoty indexu 231 a větších 64bitových systémech.

Rozhraní

Grafické uživatelské rozhraní (GUI) 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 linuxovém serveru). 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. RGUI – přichází s předkompilovanou 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 MS Windows. R Tools for Visual Studio – plugin pro MS Visual Studio, který umožňuje využití jazyka R.

Skriptovací jazyky 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í v oblasti výzkumu samotném je možné prostřednictvím Littler, jakož i prostřednictvím RDEMO.

useR! konference