Paradigma | multiparadigmatický, objektově orientovaný, imperativní, funkcionální, reflexní |
---|---|
Vývojář | R Core Team[1] |
První vydání | srpen 1993[2] |
Poslední verze | 3.6.2 „Dark and Stormy Night“ (12. prosince 2019[3]) |
Typová kontrola | dynamické |
Ovlivněn jazyky | Common Lisp, S, Scheme,[2] XLispStat |
Ovlivnil jazyky | Julia[4] |
Licence | GNU GPL v2[5] |
Web | r-project.org |
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.
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ů.[6]
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ě.
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 ↵ 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.[7]
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.
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=
.[8]
> 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
Tento příklad, vykreslující Mandelbrotovu množinu, demonstruje:
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)
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
}
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),[9] Bioconductor,[10] Omegahat,[11] 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.[12]
„Task Views“ (česky „Zobrazení úloh“)[13] – 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,[14] komunitního webu pro kontrolu a hodnocení všech balíčků CRAN a R-Forge,[15] 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,[16] phytools, phyloseq, Phyloch[17] nebo ParallelStructure.[18] 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.
Kompletní seznam změn je udržován v NEWS souboru. Některé vlastnosti jsou uvedeny níže.
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.
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:
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.
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ýzu 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.
V tomto článku byl použit překlad textu z článku R (programming language) na anglické Wikipedii.