R (limbaj de programare)

R
Clasa de limba multi-paradigma
Tipul de execuție interpretat
Aparut in 1993 [1]
Autor Ross Ihaka
Robert Gentleman
Eliberare 4.2.1 (23 iunie 2022 ) ( 23.06.2022 )
Tip sistem dinamic
A fost influențat S , Schema
Licență GNU GPL 2 [3]
Site-ul web r-project.org
OS GNU/Linux [4] , BSD [4] , macOS [4] și Microsoft Windows [4]
 Fișiere media la Wikimedia Commons

R  este un limbaj de programare pentru procesarea datelor statistice și grafică, precum și un mediu de calcul gratuit și open source în cadrul Proiectului GNU . Limbajul a fost creat ca fiind similar cu limbajul S dezvoltat la Bell Labs și este implementarea sa alternativă, deși există diferențe semnificative între limbi, dar în cea mai mare parte codul din limbajul S funcționează în mediul R. Inițial, R a fost dezvoltat de Ross Aihaka ( ing.  Ross Ihaka ) și Robert Gentleman ( ing.  Robert Gentleman ) (prima literă a numelui lor este R); limbajul și mediul sunt întreținute și dezvoltate de Fundația R [5] .

Folosit pe scară largă ca software statistic pentru analiza datelor și a devenit standardul de facto pentru programele statistice [6] .

Limba și mediul sunt disponibile sub GNU GPL ; distribuite sub formă de coduri sursă, precum și aplicații compilate pentru o serie de sisteme de operare: FreeBSD , Solaris [7] și alte distribuții Unix și Linux , Windows , macOS .

R folosește o interfață de linie de comandă , deși sunt disponibile mai multe interfețe grafice de utilizator , cum ar fi pachetul R Commander , RKWard , RStudio , Weka , Rapid Miner , KNIME și integrări în suite office.

În 2010, R a intrat pe lista câștigătorilor competiției revistei Infoworld în nominalizarea pentru cel mai bun software de dezvoltare de aplicații open source [8] .

Caracteristici

R este un limbaj de programare interpretat, principala modalitate de a lucra cu el este interpretul de comenzi. Limbajul este sensibil la majuscule, în ceea ce privește sintaxa este similar, pe de o parte, cu limbaje funcționale precum Scheme , pe de altă parte, cu limbaje de scripting moderne tipice , cu o sintaxă simplă și un set mic de elemente de bază. structurilor. Limbajul obiectului: orice obiect program din el are un set de atribute - o listă numită de valori care îl definesc.

Limbajul acceptă un set minim de tipuri de date primitive: caracter (caracter), numeric (numeric), logic (logic) și complex (complex). Variabilele numerice, pe lângă numerele obișnuite, pot lua valorile speciale NaN (Nu este un număr - „nu un număr”) și Inf (Infinit - „infinit”). Infinitul (pozitiv sau negativ) se obține atunci când rezultatul calculului depășește limitele intervalului reprezentat de implementare, NaN - în timpul operațiilor cu rezultat nedefinit. Pe lângă acestea, mai există o altă valoare specială foarte importantă, NA (Nedisponibil). Poate fi folosit pentru a stabili faptul că valoarea corespunzătoare implicată în calcule nu a fost obținută dintr-un anumit motiv (o situație destul de comună în calculele statistice când, din cauza eșecurilor în colectarea datelor, unele observații rămân fără rezultate).

Valorile tipurilor primitive pot fi combinate în vectori (vector), liste (listă), matrice sau matrice (matrice), inclusiv multidimensionale; aceste tipuri combinate stochează seturi de date de același tip primitiv. În plus, limbajul conține conceptul de factori (factor) - seturi de date categorice sau de scară care preiau un set de valori strict definit. În cele din urmă, pot fi create tabele (cadre de date) - structuri de date care stochează un set de parametri (caracteristici) diferiți (și având diferite tipuri) pentru fiecare rând (individual). O caracteristică a lui R este că operațiile cu vectori și matrice sunt suportate la nivelul limbajului în sine, ca, de exemplu, în APL .

Există o operație pentru extragerea și scrierea datelor (analog unei sarcini) " <-", precum și operațiile obișnuite de lucru cu date, inclusiv cele aritmetice. Accesul prin index la elementele vectorilor și matricelor se realizează folosind paranteze drepte, accesul la atributele listelor - prin operatorul " $". Există un set minim de constructe de programare imperative comune: operator condițional if, bucle whileși for. Expresiile în R pot fi descrise ca obiecte separate și evaluate după cum este necesar. Descrierea funcțiilor se bazează pe același mecanism. Există facilități încorporate pentru aplicarea expresiilor și funcțiilor la vectori și tablouri.

Funcțiile R pot fi grupate în pachete - module încărcabile care se conectează la orice program și oferă facilitățile de calcul combinate în ele. Pachetele pentru R pot fi dezvoltate în alte limbaje de programare, inclusiv C, ceea ce permite, pe de o parte, să compenseze resursele vizuale limitate ale limbajului R în sine și, pe de altă parte, să obțină performanțe de calcul ridicate dacă este necesar.

Limbajul în sine are mijloace destul de limitate și nu foarte convenabile de descriere a datelor, dar acest lucru este compensat de prezența instrumentelor de bibliotecă care vă permit să încărcați seturi de date prezentate în cele mai multe formate deschise și proprietare ca tabele R. Deci, tabelele în format text simplu, tabelele Excel de diferite versiuni, datele în formate CSV , XML și multe altele pot fi încărcate cu ușurință în R.

În general, ca limbaj de programare, R este destul de simplu și chiar primitiv. Cea mai mare putere a sa este capacitatea sa de a se extinde la infinit cu pachete. Distribuția de bază a lui R include un set de bază de pachete, iar în total, începând cu 2019, sunt disponibile peste 15.316 pachete [9] . Aproape toate instrumentele relevante ale calculului statistic universal sunt implementate în R, cum ar fi analiza de regresie și analiza serii de timp , precum și mulți algoritmi specifici pentru rezolvarea unor probleme de înaltă specializare și cercetare în anumite domenii.

O altă caracteristică a limbajului este capacitatea de a crea grafice de înaltă calitate la nivel tipografic, care pot fi exportate în formate grafice comune și utilizate pentru prezentări sau publicații. Sunt disponibile pachete care leagă R cu cadrele GUI (de exemplu, bazate pe Tcl/Tk ) și vă permit să creați utilități specializate de analiză statistică cu o interfață grafică cu utilizatorul și afișarea rezultatelor sub formă de grafice și diagrame.

Exemple

Sintaxa de bază

> x <- c ( 1 , 2 , 3 , 4 , 5 , 6 ) # Creați o colecție ordonată > y <- x ^ 2 # Elemente pătrate din x > print ( y ) # Print y [ 1 ] 1 4 9 16 25 36 > medie ( y ) # Calculați media aritmetică a lui y; rezultatul este numărul [ 1 ] 15.16667 > var ( y ) # Calculați varianța [ 1 ] 178.9667

Media notei pentru absolvenți

# Pune o listă cu toate evaluările în variabila a: a <- c ( 4 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 5 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , + 3 , 5 , 5 , 4 , 4 , 3 , 3 , 4 , 4 , 3 , 5 , 5 , 4 , 3 , 3 , 4 , 4 , 3 , 3 , 5 , 4 , 5 , 5 ) # Puneți numărul de evaluări în variabila n: lungime ( a ) -> n # Scorul mediu: m <- medie ( a ) # Tabel (orizontal) care numără numărul de evaluări: t <- tabel ( a ) # Convertiți într-un format de date mai convenabil (tabel vertical): f <- as.data.frame ( t ) # Calculați procentul și scrieți-l în a treia coloană: mapply ( funcția ( r ) r * 100 / n , f [, 2 ]) -> f [, 3 ] # Titluri de coloane: colnames ( f ) <- c ( " Scor " , " Cantitate " , " % " ) # Rezultate de ieșire: a n m f

Rezultat:

[1] 4 3 3 3 3 4 4 4 4 4 5 4 4 4 5 5 5 5 3 5 5 4 4 3 3 4 4 3 5 5 4 3 3 4 4 3 3 5 | ieșire a (38 de numere din 41 se potrivesc în șir) [39] 4 5 5 | (trei numere rămase) [1] 41 | ieșire n [1] 4 | ieșire m Estimare Nr. % | Prima coloană - numărul rândului din tabel 1 3 12 29.26829 | A doua coloană - tip de evaluare ("3"/"4"/"5") 2 4 17 41.46341111 | A 3-a coloană - numărul de evaluări 3 5 12 29.26829 | Coloana a 4-a - procentul de note

Instrumente

O serie de interfețe grafice au fost dezvoltate pentru confortul lucrului cu R, inclusiv RStudio , JGR , RKWard , SciViews-R , Statistical Lab , R Commander , Rattle și pachetul software Shiny .

În plus, o serie de editori de text și cod oferă moduri speciale de lucru cu R, în special ConTEXT , Emacs ( Emacs Speaks Statistics ), jEdit , Kate , Notepad++ , Syn , TextMate , Tinn-R , Vim , Bluefish , WinEdt (cu Pachetul RWinEdt), Gedit (cu pachetul rgedit/gedit-r-plugin). Există un plugin R specializat pentru mediul de dezvoltare Eclipse ; Funcțiile R și runtime pot fi accesate din Python folosind pachetul RPy; Puteți lucra cu R din pachetul econometric Gretl .

Comercializare

Revolution Analytics , fondată în 2007 și achiziționată de Microsoft în 2015, și-a bazat întreaga afacere pe comercializarea limbajului de programare R, în pachetul său comercial Revolution R , astfel de componente (nu sunt distribuite cu versiunea gratuită a limbajului) precum ParallelR (suport ). pentru runtime multithreading) sunt notabile), R Productivity Environment ( mediu de dezvoltare integrat ), RevoScaleR (suport pentru procesare masiv paralelă în cadrul conceptului de „ big data ”), RevoDeployR , biblioteci pentru integrarea cu servicii web, suport pentru SAS Institute formate de pachete statistice [10] .

În octombrie 2011, Oracle Corporation a lansat Big Data Appliance  , un cluster NoSQL de servere de procesare masiv paralele cu instrumente software integrate bazate pe limbajul R și Apache Hadoop [11] , iar în februarie 2012, limbajul a fost încorporat în baza de date Oracle . 12] . În 2011, analiza în masă-paralelă prin intermediul R a fost implementată în complexele hardware-software Netezza ale IBM Corporation [13] [14] ; mai târziu, limba a fost acceptată în pachetul hardware și software SAP Hana .

Limbajul R este suportat și de mediile software comerciale Tibco Spotfire , SPSS (începând cu versiunea 16.0) [15] , Statistica (începând cu versiunea 9.0), Platform Symphony , Power BI , SAS , Tableau .

Cran

R și pachetele suplimentare sunt distribuite prin CRAN (un acronim pentru Comprehensive R Archive Network ). Începând cu sfârșitul anilor 2010, în lume sunt disponibile peste 60 de oglinzi CRAN , nodul principal fiind situat în Viena ( Austria ) [16] .

Buletin informativ R

Jurnalul R [17] , un jurnal informațional distribuit gratuit, publicat de două până la trei ori pe an, include articole despre prelucrarea și inginerie a datelor statistice, destinate atât utilizatorilor de limbi, cât și dezvoltatorilor R. Din ianuarie 2001 până în octombrie 2008, a fost publicat ca un buletinul informativ R Știri [18] .

Conferințe

Una dintre cele mai populare conferințe lingvistice este useR! ( The R User Conference ), desfășurată anual din 2004 , reunește experți din diverse domenii.

Din 2009, în fiecare primăvară, la Chicago , are loc o conferință dedicată aplicării R în finanțe ( R/Finance: Applied Finance with R ). În 2013, a avut loc prima conferință dedicată utilizării R în asigurări ( R în Insurance ).

Note

  1. A Brief History Arhivat 14 februarie 2012 la Wayback Machine R: Past and Future History, Ross Ihaka, Departamentul de Statistică, Universitatea din Auckland, Auckland, Noua Zeelandă, disponibil pe site-ul CRAN
  2. 1 2 R: Un limbaj pentru analiza datelor și grafică
  3. https://www.r-project.org/about.html
  4. 1 2 3 4 Director de software gratuit
  5. R: Fundația R. Preluat la 28 octombrie 2016. Arhivat din original la 25 mai 2016.
  6. Teaching-with-R.pdf Arhivat 11 iunie 2016 la Wayback Machine 
  7. R-Project pe Solaris  (link descendent)  (link descendent din 13-05-2013 [3461 de zile])
  8. InfoWorld Bossie Awards 2010 Arhivat 11 septembrie 2014.
  9. CRAN - Pachete contribuite . cran.r-project.org. Preluat la 8 decembrie 2019. Arhivat din original la 13 martie 2016.
  10. „Pălărie roșie pentru statistici” se întâlnește cu SAS . Preluat la 29 septembrie 2017. Arhivat din original la 7 iulie 2017.
  11. Oracle își lansează propriile NoSQL și Hadoop . Preluat la 29 septembrie 2017. Arhivat din original la 7 iulie 2017.
  12. Prickett Morgan, Timothy Oracle introduce limbajul statisticilor R în baza de date  (ing.)  (link indisponibil) . Registrul (10 februarie 2012). Consultat la 10 februarie 2012. Arhivat din original pe 3 iunie 2012.
  13. Harris, Derrick . IBM creează Big Data Frankenstein cu Netezza-R Fusion  (engleză) , The New York Times  (2011-03-141). Consultat la 19 noiembrie 2011.
  14. Rosenberg, Dave Open-source „R” primește integrarea Hadoop  (engleză)  (link nu este disponibil) . cnet . CBS . Consultat la 19 noiembrie 2011. Arhivat din original pe 17 februarie 2012.
  15. RSS contează . Consultat la 19 noiembrie 2011. Arhivat din original pe 2 aprilie 2012.
  16. CRAN Head Node . Consultat la 7 aprilie 2007. Arhivat din original pe 5 ianuarie 2008.
  17. R Journal . Data accesului: 30 decembrie 2010. Arhivat din original la 17 februarie 2010.
  18. CRAN:R Știri . Consultat la 7 aprilie 2007. Arhivat din original pe 28 mai 2007.

Literatură

  • Robert Kabakov. R în acțiune = R în acțiune. - DMK-Press , 2014. - 588 p. — ISBN 978-5-947060-077-1 .
  • Hadley Wickham, Garrett Growlmund. R pentru Data Science: vizualizați, modelați, transformați, ordonați și importați date. - Williams , 2017. - 592 p. - ISBN 978-5-9909446-8-8 , 978-1-491-91039-9.
  • Norman Matloff Arta programării R. Scufundați-vă în Big Data. = Arta programării R: un tur al proiectării software statistice. . -Peter, 2019. - 416 p. -ISBN 978-5-4461-1101-5.

Link -uri