R (programmeertaal)

R
R logo.svg
R terminal.jpg
R -terminal
Paradigma's Multi-paradigma: procedureel, georiënteerd object, functioneel, reflecterend, imperatief, reeks[1]
Ontworpen door Ross ihaka en Robert Gentleman
Ontwikkelaar R Core Team
Verscheen voor het eerst Augustus 1993; 29 jaar geleden
Stabiele vrijlating
4.2.1[2] / 23 juni 2022; 4 maanden geleden
Discipline typen Dynamisch
Platform ARM64 en x86-64
Licentie GNU GPL V2
Bestandsnaam extensies
Website WWW.r-project.org Edit this at Wikidata
Beïnvloed door
Beïnvloed
Julia[5]
  • R programmeren bij Wikibooks

R is een programmeertaal voor Statistisch computergebruik en graphics ondersteund door het R Core Team en de R Foundation for Statistical Computing. Gemaakt door statistici Ross ihaka en Robert Gentleman, R wordt gebruikt tussen Data Miners, bio -informaticians en statistians voor gegevensanalyse en ontwikkelen Statistische software.[6] Gebruikers hebben pakketten gemaakt om de functies van de R -taal te vergroten.

Volgens gebruikersenquêtes en studies van wetenschappelijke literatuurdatabases is R een van de meest gebruikte programmeertalen die worden gebruikt bij datamining.[7] Vanaf oktober 2022, R staat op de 12e plaats in de TIOBE -index, een maat voor de populariteit van de programmeertaal, waarin de taal in augustus 2020 op de 8e plaats piekte.[8][9]

De officiële R-softwareomgeving is een open-source gratis software omgeving binnen de GNU -pakket, beschikbaar onder de GNU General Public License. Het is voornamelijk geschreven in C, Fortranen R zelf (gedeeltelijk zelf hosten). Vooraf gecompileerd uitvoerbare bestanden zijn voorzien voor verschillende besturingssystemen. R heeft een opdrachtregelinterface.[10] Meerdere derden Grafische gebruikersinterfaces zijn ook beschikbaar, zoals Rstudio, h an geïntegreerde ontwikkelomgeving, en Jupyter, a Notebook -interface.

Geschiedenis

R is een open-source implementatie van de S programmeertaal gecombineerd met lexical scoping semantiek van Schema, waardoor objecten in vooraf bepaalde blokken kunnen worden gedefinieerd in plaats van de volledige code.[1] S is gemaakt door Rick Becker, John Chambers, Doug Dunn, Jean McRae en Judy Schilling bij Bell Labs Rond 1976. Ontworpen voor statistische analyse, de taal is een geïnterpreteerde taal wiens code rechtstreeks kan worden uitgevoerd zonder een compiler.[11] Veel programma's geschreven voor S Run Ongewijzigde in R.[10] Als een dialect van de Lisp taal, schema is gemaakt door Gerald J. Sussman en Guy L. Steele Jr. Bij MIT rond 1975.[12]

In 1991, statistici Ross ihaka en Robert Gentleman bij de Universiteit van Auckland, Nieuw -Zeeland, begon aan een S -implementatie.[13] Het werd gedeeltelijk genoemd naar de eerste namen van de eerste twee R -auteurs en deels als een spel op de naam van S.[10] Ze begonnen het te publiceren op de data -archiefstatlib en de S-News Mailinglijst in augustus 1993.[14] In 1995 overtuigde statisticus Martin Mächler Ihaka en Gentleman om R te maken Gratis en open-source software onder de GNU General Public License.[14][15][16] De eerste officiële release kwam in juni 1995.[14] De eerste ambtenaar "stabiele bèta" Versie (v1.0) werd uitgebracht op 29 februari 2000.[17][18]

De Uitgebreide R -archiefnetwerk (CRAN) werd officieel aangekondigd op 23 april 1997. Cran Stores R's uitvoerbare bestanden, broncode, documentaties en pakketten die door gebruikers worden bijgedragen. Cran had oorspronkelijk 3 spiegels en 12 bijgedragen pakketten.[19] Vanaf januari 2022 heeft het 101 spiegels[20] en 18.728 hebben pakketten bijgedragen.[21] Naast het hosten van pakketten host CRAN binaries voor grote distributies van Linux, macOS en Windows.[22]

Het R -kernteam werd in 1997 opgericht om de taal verder te ontwikkelen.[10][23] Vanaf januari 2022, het bestaat uit Chambers, Gentleman, Ihaka en Mächler, plus statistici Douglas Bates, Peter Dalgaard, Kurt Hornik, Michael Lawrence, Friedrich Leisch, Uwe Ligges, Thomas Lumley, Sebastian Meyer, Paul Murrell, Martyn Plummer, Brian Ripley, Deepayan Sarkar, Duncan Temple Lang, Luke Tierney, en Simon Urbanek, evenals computerwetenschapper Tomas Kalibera. Stefano Iacus, Guido Masarotto, Heiner Schwarte, Seth Falcon, Martin Morgan en Duncan Murdoch waren lid.[14][24] In april 2003,[25] De R Foundation is opgericht als een non-profit organisatie om het R-project verdere ondersteuning te bieden.[10]

Functies

Gegevensverwerking

R's data structuren erbij betrekken vectoren, arrays, lijstenen gegevensframes.[26] Vectoren zijn geordende collecties van waarden en kunnen worden toegewezen aan arrays van een of meer dimensies in een kolom grote volgorde. Dat wil zeggen, gezien een geordende verzameling dimensies, vult men eerst waarden in de eerste dimensie in en vul vervolgens een dimensionale arrays in over de tweede dimensie, enzovoort.[27] R ondersteunt arrithmetica en is in dit opzicht als talen zoals zoals Apl en Matlab.[26][28] Het speciale geval van een array met twee dimensies wordt een genoemd Matrix. Lijsten dienen als collecties van objecten die niet noodzakelijk hetzelfde hebben data type. Gegevensframes bevatten een lijst met vectoren van dezelfde lengte, plus een unieke set rijnamen.[26] R heeft geen scalair- data type.[29] In plaats daarvan wordt een scalaire weergegeven als een lengte-een vector.[30]

R en de bibliotheken implementeren verschillende statistische technieken, waaronder lineair, Gegeneraliseerd lineair en niet -lineair Modellering, klassiek statistische tests, ruimtelijk en tijdreeksanalyse, classificatie, clustering, en anderen. Voor rekenintensieve taken, C, C ++, en Fortran Code kan zijn gekoppeld en belde tijdens runtime. Een andere sterke punten van R is statisch grafische afbeeldingen; Het kan grafieken van publicatiekwaliteit produceren die wiskundige symbolen bevatten.[31]

Programmeren

R is een geïnterpreteerde taal; Gebruikers hebben er toegang toe via een command-line tolk. Als een gebruiker typt 2+2 Op de R -opdrachtprompt en op Enter drukt, antwoordt de computer met 4.

R ondersteunt Procedurele programmering met functie en, voor sommige functies, object georiënteerd programmeren met generieke functies.[32] Vanwege zijn S erfgoed, r heeft sterker object georiënteerd programmeren Faciliteiten dan de meeste statistische computertalen. Uitbreiding wordt vergemakkelijkt door zijn lexical scoping Regels, die zijn afgeleid van schema.[33] R gebruik S-expressies om zowel gegevens als code weer te geven. Het uitbreidbare objectsysteem van R bevat objecten voor (onder andere): Regressiemodellen, tijdreeksen en geo-ruimtelijke coördinaten. Geavanceerde gebruikers kunnen C, C ++ schrijven,[34] Java,[35] .NETTO[36] of Python Code om R -objecten direct te manipuleren.[37]

Functies zijn eerste klas objecten en kunnen op dezelfde manier worden gemanipuleerd als gegevensobjecten, faciliteren meta-programmering dat staat toe Meerdere verzending. Functieargumenten worden doorgegeven op waarde, en zijn lui- Dat wil zeggen dat ze alleen worden geëvalueerd wanneer ze worden gebruikt, niet wanneer de functie wordt opgeroepen.[38] Een generieke functie werkt anders, afhankelijk van de klassen van de argumenten die eraan zijn doorgegeven. Met andere woorden, de generieke functie verzendingen de methode implementatie specifiek voor die object klas. R heeft bijvoorbeeld een algemeen afdrukken functie die bijna elk kan afdrukken klas van object in r met print (ObjectName).[39] Veel van de standaardfuncties van R zijn geschreven in R, waardoor gebruikers gemakkelijk de gemaakte algoritmische keuzes kunnen volgen. R is zeer uitbreidbaar door het gebruik van pakketten voor specifieke functies en specifieke toepassingen.

Pakketjes

De mogelijkheden van R worden uitgebreid via door de gebruiker gecreëerde[40] pakketjes, die statistische technieken, grafische apparaten, import/exporteren, rapportage bieden (Rmarkdown, breien, Zweven), enz. Deze pakketten en hun eenvoudige installatie en gebruik zijn aangehaald als het stimuleren van de wijdverbreide adoptie van de taal in Data Science.[41][42][43][44][45] Het verpakkingssysteem wordt ook gebruikt door onderzoekers om onderzoeksgegevens te organiseren, codeer te maken en bestanden op een systematische manier te rapporteren om te delen en te archiveren.[46]

Meerdere pakketten zijn opgenomen met de basisinstallatie. Extra pakketten zijn beschikbaar op Cran,[20] Bioconductor, R-forge,[47] Omegahat,[48] Gitub, en andere repositories.[49][50][51]

De "taakweergaven" op de CRAN -website[52] geeft pakketten weer in velden, waaronder financiën, genetica, high -performance computing, machine learning, medische beeldvorming, Meta-analyse,[53] Sociale wetenschappen en ruimtelijke statistieken.[53] R is geïdentificeerd door de FDA evenals geschikt voor het interpreteren van gegevens uit klinisch onderzoek.[54] Microsoft onderhoudt een dagelijkse momentopname van CRAN die dateert uit 17 september 2014.[55]

Andere R-pakketbronnen zijn R-Forge,[56][47] Een platform voor de samenwerkingsontwikkeling van R -pakketten. Het bioconductor-project biedt pakketten voor genomische gegevensanalyse, inclusief objectgeoriënteerde data-handling- en analysetools voor gegevens uit Affymetrix, cDNA microarray, en de volgende generatie high-throughput sequencing Methoden.[57]

Een groep pakketten genaamd de Opgeruimd, die kan worden beschouwd als een "dialect" van de R -taal, wordt steeds populairder bij ontwikkelaars.[notitie 1] Het streeft ernaar om een ​​samenhangende verzameling van functies te bieden voor gemeenschappelijke data science -taken, waaronder gegevensimport, reiniging, transformatie en visualisatie (met name met de GGPLOT2 pakket). Dynamische en interactieve afbeeldingen zijn beschikbaar via extra pakketten.[58]

R is een van de 5 talen met een Apache Spark API, samen met Scala, Java, Python, en Sql.[59][60]

Mijlpalen

Een lijst met wijzigingen in R -releases wordt gehandhaafd in verschillende "nieuws" -bestanden bij CRAN.[61] Sommige hoogtepunten worden hieronder vermeld voor verschillende belangrijke releases.

Laat los Datum Beschrijving
0,16 Dit is de laatste alfa Versie voornamelijk ontwikkeld door Ihaka en Gentleman. Veel van de basisfunctionaliteit uit het "witte boek" (zie S Geschiedenis) werd geïmplementeerd. De mailinglijsten begonnen op 1 april 1997.
0,49 1997-04-23 Dit is de oudste bron Release die momenteel beschikbaar is op CRAN.[62] CRAN wordt gestart op deze datum, met 3 spiegels die aanvankelijk 12 pakketten organiseerden.[63] Alfa -versies van r voor Microsoft Windows en de Klassiek Mac OS worden kort na deze versie beschikbaar gesteld.
0,60 1997-12-05 R wordt een officieel onderdeel van de GNU -project. De code wordt gehost en onderhouden CVS.
0.65.1 1999-10-07 Eerste versies van update.packages en installatie.packages Functies voor het downloaden en installeren van pakketten van CRAN.[64]
1.0 2000-02-29 Beschouwd door de ontwikkelaars stabiel genoeg voor productiegebruik.[65]
1.4 2001-12-19 S4 -methoden worden geïntroduceerd en de eerste versie voor Mac OS X wordt kort daarna beschikbaar gesteld.
1.8 2003-10-08 Geïntroduceerd een flexibele conditie -hanteringsmechanisme voor signalerings- en hanteringsvoorwaardenobjecten.
2.0 2004-10-04 Ingevoerd trage voortgang, die snel laden van gegevens mogelijk maakt met minimale kosten van het systeemgeheugen.
2.1 2005-04-18 Ondersteuning voor UTF-8 coderen en het begin van internationalisering en lokalisatie voor verschillende talen.
2.6.2 2008-02-08 Laatste versie ter ondersteuning van Windows 95, 98, ME en NT 4.0[66]
2.11 2010-04-22 Ondersteuning voor Windows 64-bit systemen.
2.12.2 2011-02-25 Laatste versie ter ondersteuning van Windows 2000[67]
2.13 2011-04-14 Het toevoegen van een nieuwe compiler -functie die het mogelijk maakt om functies te versnellen door ze te converteren bytecode.
2.14 2011-10-31 Verplichte naamruimten toegevoegd voor pakketten. Een nieuw parallel pakket toegevoegd.
2.15 2012-03-30 Nieuwe load balancing -functies. Verbeterde serialisatiesnelheid voor lange vectoren.
3.0.0 2013-04-03 Ondersteuning voor numerieke indexwaarden 231 en groter op 64-bits systemen.
3.3.3 2017-03-06 Laatste versie ter ondersteuning van Microsoft Windows XP.
3.4.0 2017-04-21 Just-in-time compilatie (JIT) van functies en lussen naar byte-code ingeschakeld ingeschakeld.
3.5.0 2018-04-23 Pakketten byte-samengesteld op de installatie standaard. Compacte interne weergave van gehele sequenties. Een nieuw serialisatie -formaat toegevoegd om compacte interne representaties te ondersteunen.
3.6.0 2019-04-26 Verbeterde bemonstering van een discrete uniforme verdeling, die merkbaar niet-uniform was op grote populaties.[68] Nieuw serialisatie -formaat dat wordt ondersteund sinds 3.5.0 de standaard wordt.
4.0.0 2020-04-24 R gebruikt nu een StringsaSfactors = false Standaard, en daarom converteert geen strings niet langer naar factoren in oproepen Data.Frame () en Read.Table (). Referentietelt wordt gebruikt voor het bijhouden van objecten, wat de noodzaak voor het kopiëren van objecten vermindert. Nieuwe syntaxis voor ruwe stringconstanten.
4.1.0 2021-05-18 Ingevoerd |>> als de pijpbeheerder voor basis R -syntaxis (vergelijkbaar met de %>% operator van het magrittr -pakket) en de Anonieme functie snelkoppeling Syntaxis \ (x) x+1
4.2.0 2022-04-22 R gebruikt UTF-8 als native codering op recente Windows-systemen. Ondersteuning voor 32-bits Windows-builds is gedropt. Roeping als() of terwijl() Met een voorwaarde van lengte groter dan één is nu een fout.

Interfaces

Verschillende applicaties kunnen worden gebruikt om R -code te bewerken of uit te voeren.[69]

Vroege ontwikkelaars gaven er de voorkeur aan om R te draaien via de opdrachtregelconsole,[70] opgevolgd door degenen die de voorkeur geven IDE.[71] IDE's voor r inclusief (in alfabetische volgorde) R.App (Alleen OSX/MacOS), Rammelen, R -commandant, Rkward, Rstudioen tinn-r.[70] R wordt ook ondersteund in multifunctionele IDE's zoals Verduistering via de statet -plug -in,[72] en Visuele studio via de R Tools voor Visual Studio.[73] Hiervan is RStudio het meest gebruikt.[71]

Statistische kaders die R op de achtergrond gebruiken omvatten Jamovi en Sten.

Editors die R ondersteunen, omvatten Emacs, Vim (NVIM-R-plug-in),[74] Kate,[75] Lyx,[76] Kladblok ++,[77] Visual Studio Code, Winedt,[78] en tinn-r.[79] Jupyter notebook Kan ook worden geconfigureerd om R -code te bewerken en uit te voeren.[80]

R -functionaliteit is toegankelijk vanuit scripttalen, waaronder Python,[81] Perl,[82] Robijn,[83] F#,[84] en Julia.[85] Interfaces naar andere programmeertalen op hoog niveau, zoals Java[86] en .NET C#[87][88] zijn beschikbaar.

Implementaties

De belangrijkste R -implementatie is geschreven in R, C en Fortran.[89] Verschillende andere implementaties waren gericht op het verbeteren van de snelheid of het verhogen van de uitbreiding. Een nauw verwante implementatie is PQR (vrij snel R) door Radford M. Neal met verbeterd geheugenbeheer en ondersteuning voor automatisch multithreading. Renjin en FASTR zijn Java implementaties van r voor gebruik in een Java virtuele machine. Cxxr, rho en riposte[90] zijn implementaties van r in C ++. Renjin, Riposteen PQR proberen de prestaties te verbeteren met behulp van meerdere kernen en uitgestelde evaluatie.[91] De meeste van deze alternatieve implementaties zijn experimenteel en onvolledig, met relatief weinig gebruikers, vergeleken met de belangrijkste implementatie die wordt beheerd door het R -ontwikkeling van de R -ontwikkeling.

TIBCO, die eerder de commerciële implementatie heeft verkocht S-plus, gebouwd een runtime -motor genaamd Terr, die deel uitmaakt van Spotfire.[92]

Microsoft R Open (MRO) is een volledig compatibele R-verdeling met wijzigingen voor multi-threaded berekeningen.[93][94] Vanaf 30 juni 2021 begon Microsoft MRO uit te grijpen ten gunste van de CRAN -distributie.[95]

Gemeenschappen

R heeft lokale gemeenschappen wereldwijd voor gebruikers om te netwerken, ideeën te delen en te leren.[96][97]

Een groeiend aantal R -evenementen brengen gebruikers samen, zoals conferenties (bijv. gebruiker!, Whyr?, Conectar, satrdays),[98][99] ontmoetingen,[100] net zoals R-Tadies groepen[101] die promoten Genderdiversiteit. De R Foundation Taskforce richt zich op vrouwen en andere ondervertegenwoordigde groepen.[102]

gebruiker! conferenties

De officiële jaarlijkse bijeenkomst van R -gebruikers wordt "User!" Genoemd.[103] Het eerste evenement was gebruiker! 2004 in mei 2004, Wenen, Oostenrijk.[104] Na het overslaan van 2005, de gebruiker! Conferentie is jaarlijks gehouden, meestal afwisselend tussen locaties in Europa en Noord -Amerika.[105] Geschiedenis:[103]

  • gebruiker! 2006, Wenen, Oostenrijk
  • gebruiker! 2007, Ames, Iowa, VS
  • gebruiker! 2008, Dortmund, Duitsland
  • gebruiker! 2009, Rennes, Frankrijk
  • gebruiker! 2010, Gaithersburg, Maryland, VS
  • gebruiker! 2011, Coventry, Verenigd Koninkrijk
  • gebruiker! 2012, Nashville, Tennessee, VS
  • gebruiker! 2013, Albacete, Spanje
  • gebruiker! 2014, Los Angeles, Californië, VS
  • gebruiker! 2015, Aalborg, Denemarken
  • gebruiker! 2016, Stanford, Californië, VS
  • gebruiker! 2017, Brussel, België
  • gebruiker! 2018, Brisbane, Australië
  • gebruiker! 2019, Toulouse, Frankrijk
  • gebruiker! 2020, vond online plaats vanwege Covid-19 Pandemic
  • gebruiker! 2021, vond online plaats vanwege Covid-19 pandemie
  • gebruiker! 2022, vond online plaats vanwege Covid-19 pandemie

De datums en de locatie voor de volgende gebruiker! Evenement moet worden beslist vanaf juli 2022.

Het R Journal

Het R Journal is een vrije toegang, beschreven Journal of the R Project. Het beschikt over korte tot middellange artikelen over het gebruik en de ontwikkeling van R, inclusief pakketten, programmeertips, CRAN -nieuws en foundation -nieuws.

Vergelijking met alternatieven

R is vergelijkbaar met populaire commerciële statistische pakketten zoals SAS, SPSS, en Stata. Een verschil is dat r niet beschikbaar is onder een Gratis softwarelicentie.[106]

In januari 2009, de New York Times Ran een artikel met de groei van R, de redenen voor zijn populariteit bij datawetenschappers en de dreiging die het vormt voor commerciële statistische pakketten zoals SAS.[107] In juni 2017 publiceerde datawetenschapper Robert Muenchen een meer diepgaande vergelijking tussen R en andere softwarepakketten, "de populariteit van data science software".[108]

R is procedureeler dan SAS of SPSS, die beide zwaar gebruik maken van voorgeprogrammeerde procedures ("procs" genoemd) die zijn ingebouwd in de taalomgeving en aangepast door parameters van elke oproep. R verwerkt in het algemeen gegevens in-memory, die het nut ervan bij het verwerken van grotere bestanden beperkt.[109]

Commerciële ondersteuning

Hoewel r een open source Project, sommige bedrijven bieden commerciële ondersteuning en extensies.

In 2007 richtten Richard Schultz, Martin Schultz, Steve Weston en Kirk Mettler op Revolutie -analyse Om commerciële ondersteuning te bieden aan Revolution R, omvat hun verdeling van R, waaronder componenten die door het bedrijf zijn ontwikkeld. Belangrijke extra componenten zijn onder meer: ​​parallelr, de R -productiviteitsomgeving IDE, Revoscaler (voor Big Data Analyse), revode implementr, Web Services Framework en de mogelijkheid om gegevens te lezen en te schrijven in het SAS -bestandsformaat.[110] Revolution Analytics biedt een R -verdeling die is ontworpen om te voldoen aan de gevestigde IQ/OQ/PQ Criteria waarmee klanten in de farmaceutische sector hun installatie van Revolution R. kunnen valideren.[111] In 2015, Microsoft Corporation verworven revolutie -analyse[112] en de R -programmeertaal geïntegreerd in SQL Server, Power BI, Azure SQL beheerde instantie, Azure Cortana Intelligence, Microsoft ML Server en Visual Studio 2017.[113]

In oktober 2011, Orakel kondigde de Big data -apparaat, die r, integreert, Apache Hadoop, Oracle Linux, en een NoSQL database met Exadata hardware.[114] Vanaf 2012, Oracle R Enterprise[115] werd een van de twee componenten van de "Oracle Advanced Analytics -optie"[116] (naast Oracle Data Mining).

IBM biedt ondersteuning voor in-Hadoop uitvoering van r,[117] en biedt een programmeermodel voor massaal parallelle in-database-analyse in R.[118]

TIBCO biedt een runtime-versie R als onderdeel van Spotfire.[119]

Mango Solutions biedt een validatiepakket voor R, Validr,[120][121] Om te voldoen aan agentschappen voor goedkeuring door geneesmiddelen, zoals de FDA. Deze agentschappen vereisten het gebruik van gevalideerde software, zoals bevestigd door de leverancier of sponsor.[122]

Voorbeelden

Basic Syntax

De volgende voorbeelden illustreren de basis Syntaxis van de taal en gebruik van de opdrachtregelinterface. (Een uitgebreide lijst met standaardtaalfuncties is te vinden in de R -handleiding, "een inleiding tot R".[123]))

In r, de over het algemeen de voorkeur toewijzingsoperator is een pijl gemaakt van twee tekens <-, hoewel = kan in sommige gevallen worden gebruikt.[124][125]

> x <- 1:6 # Maak een numerieke vector in de huidige omgeving > y <- x^2 # Vector maken op basis van de waarden in x. > afdrukken(y) # Druk de inhoud van de vector af. [1]  1  4  9 16 25 36 > z <- x + y # Maak een nieuwe vector die de som van x en y is > z # Retourneer de inhoud van Z naar de huidige omgeving. [1]  2  6 12 20 30 42 > z_matrix <- Matrix(z, nro=3) # Maak een nieuwe matrix die de vector Z verandert in een 3x2 matrixobject > z_matrix       [, 1] [, 2] [1,] 2 20 [2,] 6 30 [3,] 12 42 > 2*t(z_matrix)-2 # Transponeer de matrix, vermenigvuldig elk element met 2, trek 2 af van elk element in de matrix en retourneer de resultaten naar de terminal.      [, 1] [, 2] [, 3] [1,] 2 10 22 [2,] 38 58 82 > new_df <- Data.Frame(t(z_matrix), rij. Namen=c('EEN','B')) # Maak een nieuw data.frame -object dat de gegevens van een getransponeerde z_matrix bevat, met rijnamen 'A' en 'B' > namen(new_df) <- c('X','Y','Z') # Stel de kolomnamen van new_df in als X, Y en Z. > afdrukken(new_df)  # Druk de huidige resultaten af.    X Y Z A 2 6 12 B 20 30 42 > new_df$Z # Voer de z -kolom uit [1] 12 42 > new_df$Z==new_df['Z'] && new_df[3]==new_df$Z # De data.frame -kolom Z is toegankelijk met $ z, ['z'] of [3] syntaxis en de waarden zijn hetzelfde.  [1] Waar > attributen(new_df) # Print attributen informatie over het nieuwe_df -object $ namen [1] "x" "y" "z" $ row.names [1] "A" "B" $ klasse [1] "Data.Frame" > attributen(new_df)$rij. Namen <- c('een','twee') # Toegang en wijzig vervolgens het kenmerk Row.names; kan ook worden gedaan met behulp van Rownamen () > new_df      X Y Z één 2 6 12 Twee 20 30 42 

Structuur van een functie

Een van de sterke punten van R is het gemak van het creëren van nieuwe functies. Objecten in de functie van de functie blijven lokaal naar de functie en elk gegevenstype kan worden geretourneerd.[126] Voorbeeld:

# Declareer functie "f" met parameters "x", "y" # Dat retourneert een lineaire combinatie van x en y. f <- functie(x, y) {  z <- 3 * x + 4 * y  opbrengst(z) ## De functie return () is hier optioneel } 
> f(1, 2) [1] 11 > f(c(1,2,3), c(5,3,4)) [1] 23 18 25 > f(1:3, 4) [1] 19 22 25 

Modellering en plotten

De R-taal heeft ingebouwde ondersteuning voor gegevensmodellering en grafische afbeeldingen. Het volgende voorbeeld laat zien hoe R een lineair model met residuen gemakkelijk kan genereren en plotten.

Diagnostische plots van het plotten van "model" (q.v. "plot.lm ()" functie). Let op de wiskundige notatie die is toegestaan ​​in labels (plot linkeronder).
> x <- 1:6 # Maak X- en Y -waarden maken > y <- x^2   > model- <- lm(y ~ x)  # Lineair regressiemodel y = a + b * x. > overzicht(model-)  # Toon een diepgaande samenvatting van het model. Telefoongesprek: lm (formule = y ~ x) Residuen:       1       2       3       4       5       6       7       8      9      10  3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333 Coëfficiënten:             Schatting Std. Fout t waarde pr (> | t |)  (Intercept) -9.3333 2.8441 -3.282 0.030453 *  x 7.0000 0.7303 9.585 0,000662 *** --- Betekende. Codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘’ 1 Reststandaardfout: 3.055 op 4 vrijheidsgraden Meerdere R-kwadraat: 0.9583, aangepast R-kwadraat: 0.9478 F-statistisch: 91.88 op 1 en 4 df, p-waarde: 0,000662 > par(mast = c(2, 2))  # Maak een 2 bij 2 lay -out voor cijfers. > verhaallijn(model-)  # Uitvoerdiagnostische plots van het model. 

Mandelbrot Set

Korte R -code berekenen Mandelbrot Set Door de eerste 20 iteraties van vergelijking z = z2 + c uitgezet voor verschillende complexe constanten c. Dit voorbeeld laat zien:

"Mandelbrot.gif" - Graphics gemaakt in R met 14 regels code in Voorbeeld 2
  • Gebruik van door de gemeenschap ontwikkelde externe bibliotheken (pakketten genoemd), in dit geval Catools-pakket
  • afhandeling van complexe getallen
  • Multidimensionale arrays van getallen die worden gebruikt als basisgegevenstype, zie variabelen C, Z en X.
Installeren.packages("Catools")  # Installeer extern pakket bibliotheek(catools)  # extern pakket met schrijf.gif -functie jet.colors <- Colorramppalette(c("groente", "roze", "#007fff", "Cyaan", "#7fff7f",  "wit", "#Ff7f00", "rood", "#7f0000")) dx <- 1500  # Definieer breedte dy <- 1400  # Definieer hoogte C  <- complex(echt = reputatie(SEQ(-2.2, 1.0, lengte.out = dx), elk = dy),  beeld = reputatie(SEQ(-1.2, 1.2, lengte.out = dy), dx)) C <- Matrix(C, dy, dx)  # hervormen als vierkante matrix van complexe getallen Z <- 0  # Initialiseer Z naar nul X <- reeks(0, c(dy, dx, 20)) # Initialiseer de uitvoer 3D -array voor (k in 1:20) {  # lus met 20 iteraties  Z <- Z^2 + C  # de centrale verschilvergelijking  X[, , k] <- exp(-buikspieren(Z))  # Resultaten vastleggen } schrijf.gif(X, "Mandelbrot.gif", col = jet.colors, vertraging = 100) 

Zie ook

Aantekeningen

  1. ^ Vanaf 13 juni 2020, Metacran vermeld 7 van de 8 kernpakketten van de Tidyverse in de lijst met de meeste Download R -pakketten.

Referenties

  1. ^ a b Morandat, Frances; Hill, Brandon; Osvald, Leo; Vitek, Jan (11 juni 2012). "Het ontwerp van de R -taal evalueren: objecten en functies voor gegevensanalyse". Europese conferentie over objectgeoriënteerd programmeren. 2012: 104–131. doen:10.1007/978-3-642-31057-7_6. Opgehaald 17 mei 2016 - Via SpringerLink.
  2. ^ Peter Dalgaard (23 juni 2022). "R 4.2.1 wordt vrijgegeven". Opgehaald 23 juni 2022.
  3. ^ "R scripts". Mercury.webster.edu. Opgehaald 17 juli 2021.
  4. ^ "R Data Format Family (.rdata, .rda)". Loc.gov. 9 juni 2017. Opgehaald 17 juli 2021.
  5. ^ "Invoering". De Julia -handleiding. Gearchiveerd van het origineel op 20 juni 2018. Opgehaald 5 augustus 2018.
  6. ^ Giorgi, Federico M.; Ceraolo, Carmine; Mercatelli, Daniele (27 april 2022). "De R -taal: een motor voor bioinformatica en data science". Leven. 12 (5): 648. doen:10.3390/life12050648. ISSN 2075-1729. PMC 9148156. Pmid 35629316.
  7. ^ R's populariteit
  8. ^ "TIOBE INDEX - Het softwarekwaliteitsbedrijf". Tiob. Opgehaald 12 maart 2022.{{}}: CS1 onderhoud: url-status (link)
  9. ^ "TIOBE INDEX: de R -programmeertaal". Tiob. Opgehaald 23 mei 2022.
  10. ^ a b c d e Kurt Hornik. The R FAQ: Waarom R?. ISBN 3-900051-08-9. Opgehaald 29 januari 2008.
  11. ^ Becker, Richard A., Een korte geschiedenis van S, Citeseerx 10.1.1.131.1428, opgehaald 12 januari 2022
  12. ^ Sussman, Gerald Jay; Steele, Guy L. (1 december 1998). "Het eerste rapport over schema herzien". Hogere orde en symbolische berekening. 11 (4): 399–404. doen:10.1023/A: 1010079421970. ISSN 1573-0557. S2CID 7704398.
  13. ^ "Academisch ongeslacht door de status van rockster". NZ Herald. Opgehaald 30 december 2021.
  14. ^ a b c d Ihaka, Ross (1998). R: verleden en toekomstige geschiedenis (PDF) (Technisch rapport). Statistiekenafdeling, de Universiteit van Auckland, Auckland, Nieuw -Zeeland.
  15. ^ "R -licentie". R-project. Opgehaald 5 augustus 2018.
  16. ^ GNU -project
    • "Gnu r". Free Software Foundation (FSF) gratis softwaredirectory. 23 april 2018. Opgehaald 7 augustus 2018.
    • R Project (n.d.). "Wat is R?". Opgehaald 7 augustus 2018.
  17. ^ "Meer dan 16 jaar van R -projectgeschiedenis". Revoluties. Opgehaald 30 mei 2016.
  18. ^ Ihaka, Ross. "Het R -project: een korte geschiedenis en gedachten over de toekomst" (PDF). STAT.AUCKLAND.AC.NZ.
  19. ^ Kurt Hornik (23 april 1997). "Aankondigen: Cran". r-help. WikidataQ101068595..
  20. ^ a b "Cran - Mirrors". cran.r-project.org. Opgehaald 15 januari 2022.
  21. ^ "CRAN - Dragenpakketten" bijgedragen ". cran.r-project.org. Opgehaald 3 januari 2022.
  22. ^ Hornik, Kurt (2012). "Het uitgebreide R -archiefnetwerk". Draden computationele statistieken. 4 (4): 394–398. doen:10.1002/WICS.1212. ISSN 1939-5108. S2CID 62231320.
  23. ^ Fox, John (2009). "Aspecten van de sociale organisatie en het traject van het R -project". Het R Journal. 1 (2): 5. doen:10.32614/RJ-2009-014. ISSN 2073-4859.
  24. ^ "R: bijdragers". R -project. Opgehaald 14 juli 2021.
  25. ^ Mächler, Martin; Hornik, Kurt (december 2014). "R Foundation News" (PDF). Het R Journal. Opgehaald 30 december 2021.{{}}: CS1 onderhoud: url-status (link)
  26. ^ a b c Dalgaard, Peter (2002). Inleidende statistieken met r. New York, Berlijn, Heidelberg: Springer-Verlag. pp.10–18, 34. ISBN 0387954759.
  27. ^ Een inleiding tot r, Sectie 5.1: Arrays. Opgehaald in 2010-03 van https://cran.r-project.org/doc/manuals/r-Intro.html#arrays.
  28. ^ Chen, Han-Feng; Wai-Mee, Ching; DA, Zheng. "Een vergelijkingstudie over uitvoeringsprestaties van MATLAB en APL" (PDF). McGill University. Opgehaald 16 februari 2022.
  29. ^ Ihaka, Ross; Gentlman, Robert (september 1996). "R: een taal voor gegevensanalyse en grafische afbeeldingen" (PDF). Journal of Computational and Graphical Statistics. American Statistical Association. 5 (3): 299–314. doen:10.2307/1390807. Jstor 1390807. Opgehaald 12 mei 2014.
  30. ^ "Gegevensstructuren · Advanced R." adv-r.had.co.nz. Opgehaald 26 september 2016.
  31. ^ "R: Wat is R?". R-project.org. Opgehaald 17 februari 2022.
  32. ^ Wit, Homer. 14.1 Programmeerparadigma's | Beginnend informatica met r.
  33. ^ Jackman, Simon (voorjaar 2003). "R voor de politieke methodoloog" (PDF). De politieke methodoloog. Politieke methodologie sectie, American Political Science Association. 11 (1): 20–22. Gearchiveerd van het origineel (PDF) op 21 juli 2006. Opgehaald 13 september 2018.
  34. ^ Eddelbuettel, Dirk; Francois, Romain (2011). "RCPP: naadloze R- en C ++ -integratie". Journal of Statistical Software. 40 (8). doen:10.18637/jss.v040.i08.
  35. ^ "Nution-J2R: Java Library om R Native Functions op te roepen". Opgehaald 13 september 2018.
  36. ^ .NET -framework
  37. ^ R handleidingen. "R -extensies schrijven". r-project.org. Opgehaald 13 september 2018.
  38. ^ "Functies · Advanced R." adv-r.had.co.nz.
  39. ^ R Core Team. "Drukwaarden" afdrukken ". R documentatie. R Foundation for Statistical Computing. Opgehaald 30 mei 2016.
  40. ^ Hadley, Wickham; Bryan, Jenny. "R -pakketten: uw code organiseren, testen, documenteren en delen". {{}}: Cite Journal vereist |journal= (helpen)
  41. ^ Chambers, John M. (2020). "S, R en Data Science". Het R Journal. 12 (1): 462–476. doen:10.32614/RJ-2020-028. ISSN 2073-4859.
  42. ^ Vance, Ashlee (6 januari 2009). "Gegevensanalisten geboeid door R's Power". New York Times.
  43. ^ Tippmann, Sylvia (29 december 2014). "Programming Tools: Adventures with R". Natuurnieuws. 517 (7532): 109–110. doen:10.1038/517109a. Pmid 25557714.
  44. ^ Thieme, Nick (2018). "R generatie". Betekenis. 15 (4): 14–19. doen:10.1111/j.1740-9713.2018.01169.x. ISSN 1740-9713.
  45. ^ veel gebruikt
  46. ^ Marwick, Ben; Boettiger, Carl; Mullen, Lincoln (26 augustus 2017). "Verpakkingsgegevensanalytisch werk reproduceerbaar met behulp van R (en vrienden)". Peerj preprints. doen:10.7287/peerj.preprints.3192v1. ISSN 2167-9843.
  47. ^ a b TheUßl, Stefan; Zeileis, Achim (2009). "De ontwikkeling van collaboratieve software met behulp van R-Forge". Het R Journal. 1 (1): 9. doen:10.32614/RJ-2009-007. ISSN 2073-4859.
  48. ^ "Omegahat.net". Omegahat.net. Opgehaald 16 september 2018.
  49. ^ Pakketten beschikbaar bij Repositories
  50. ^ Wickham, Hadley; Bryan, Jennifer. Hoofdstuk 10 Objectdocumentatie | R -pakketten.
  51. ^ "Rd opmaak". cran.r-project.org. Opgehaald 16 augustus 2021.
  52. ^ "Cran -taakweergave". cran.r-project.org. Opgehaald 16 september 2018.
  53. ^ a b Hornik, Kurt; Zeileis, Achim (2013). "Veranderingen op Cran" (PDF). Het R Journal. 5 (1): 239–264.
  54. ^ "FDA: R OK voor drugsproeven". Opgehaald 16 september 2018.
  55. ^ "Cran Time Machine. Mran". Opgehaald 26 december 2019.
  56. ^ "R-Forge: Welcome". Opgehaald 16 september 2018.
  57. ^ Huber, W; Carey, VJ; Heer, r; Anders, s; Carlson, M; Carvalho, BS; Bravo, HC; Davis, S; Gatto, l; Girke, t; Gottardo, r; Hahne, f; Hansen, KD; Irizarry, Ra; Lawrence, M; Hou van mij; MacDonald, J; OBenchain, V; Oleś, Ak; Pagès, h; Reyes, A; Shannon, P; Smyth, GK; Tenenbaum, D; Waldron, L; Morgan, M (2015). "Genomische analyse met high-throughput met bioconductor". Natuurmethoden. Nature Publishing Group. 12 (2): 115–121. doen:10.1038/nmeth.3252. PMC 4509590. Pmid 25633503.
  58. ^ Lewin-Koh, Nicholas (7 januari 2015). "CRAN -taakweergave: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization". Het uitgebreide R -archiefnetwerk. Gearchiveerd van het origineel op 26 september 2016. Opgehaald 13 september 2018. {{}}: Cite Journal vereist |journal= (helpen)
  59. ^ "Spark API -documentatie". Vonk.
  60. ^ "Sparkr (R on Spark)". Vonk.
  61. ^ Veranderingen in versies 3.0.0 verder: "R News". cran.r-project.org. Opgehaald 3 juli 2014. Eerdere wijzigingslogboeken (door een groot release -nummer):
    • "NIEUWS". cran.r-project.org. Opgehaald 28 juni 2020.
    • "Nieuws.3". cran.r-project.org. Opgehaald 28 juni 2020.
    • "Nieuws.2". cran.r-project.org. Opgehaald 8 april 2017.
    • "Nieuws.1". cran.r-project.org. Opgehaald 8 april 2017.
    • "News.0". cran.r-project.org. Opgehaald 8 april 2017.
  62. ^ "Index van/src/base/r-0". cran.r-project.org.
  63. ^ "Aankondigen: Cran". stat.ethz.ch.
  64. ^ "0.99 Series Nieuws: wijzigingen in R -versie 0.99.0". Cran.r-project.org. Opgehaald 18 februari 2022.
  65. ^ Peter Dalgaard. "R-1.0.0 wordt uitgebracht". Stat.ethz.ch. Opgehaald 6 juni 2009.
  66. ^ "Wijzigingen in R versie 2.7.0". Cran-archive.r-project.org. Opgehaald 18 februari 2022.
  67. ^ "R FAQ". Cran.r-project.org. Opgehaald 20 maart 2020.
  68. ^ Ottoboni, Kellie; Stark, Philip B. (2018). "Willekeurige problemen met R". arxiv:1809.06520 [Cs.ms].
  69. ^ "Aanbevelingen voor Windows -teksteditor voor R (StackOverflow)". Stackoverflow.com. Opgehaald 20 december 2020.
  70. ^ a b "Poll: r Gui u gebruikt regelmatig (2011)". kdnuggets.com. Opgehaald 18 september 2018.
  71. ^ a b "R -programmering - de status van ontwikkelaarecosysteem in 2020 Infographic". Jetbrains: ontwikkelaarstools voor professionals en teams. Opgehaald 16 augustus 2021.
  72. ^ Stephan Wahlbrink. "Statet voor R".
  73. ^ "Werk met R in Visual Studio". Opgehaald 14 december 2020.
  74. ^ "NVIM -R - plug -in om te werken met R: Vim Online". Vim.org. Opgehaald 6 maart 2019.
  75. ^ "Syntaxen markering". Kate Development Team. Gearchiveerd van het origineel op 7 juli 2008. Opgehaald 9 juli 2008.
  76. ^ Paul E. Johnson & Gregor Gorjanc. "Lyx met r door weven". Opgehaald 4 april 2017.
  77. ^ "Npptor: R in Notepad ++". sourceForge.net. 8 mei 2013. Opgehaald 18 september 2013.
  78. ^ UWE LIGGES (5 januari 2017). "Rwinedt: R -interface naar 'Winedt'". Opgehaald 4 april 2017.
  79. ^ "Tinn-R". Opgehaald 5 maart 2019.
  80. ^ "Het gebruik van de R -programmeertaal in Jupyter Notebook". Anaconda. Opgehaald 14 september 2020.
  81. ^ Gautier, Laurent. "RPY2 - R in Python". Opgehaald 30 november 2021.{{}}: CS1 onderhoud: url-status (link)
  82. ^ Florent Angly. "Statistieken :: R - Perl -interface met het R Statistical Program". Metacpan.org.
  83. ^ Alex Gutteridge (15 juli 2021). "GitHub - Alexgutteridge/RSRuby: Ruby - R Bridge". GitHub.com.
  84. ^ Bluemountain Capital. "F# r type provider".
  85. ^ "JuliaInterop/rcall.jl". GitHub.com. 2 juni 2021.
  86. ^ "RServe - Binary R Server - rforge.net". Rforge.net.
  87. ^ "Konne/rservecli2". GitHub.com. 8 maart 2021.
  88. ^ "R.net". Jmp75.github.io. Opgehaald 18 februari 2022.
  89. ^ "R-Source: lees alleen spiegel van R-broncode op GitHub". Gitub. Opgehaald 14 september 2019.
  90. ^ Talbot, Justin; Devito, Zachary; Hanrahan, Pat (1 januari 2012). "Riposte: een trace-aangedreven compiler en parallelle VM voor vectorcode in R". Proceedings van de 21e internationale conferentie over parallelle architecturen en compilatietechnieken. ACM: 43–52. doen:10.1145/2370816.2370825. S2CID 1989369.
  91. ^ Neal, Radford (25 juli 2013). "Uitgestelde evaluatie in Renjin, Riposte en PQR". Radford Neal's blog. Opgehaald 6 maart 2017.
  92. ^ Jackson, Joab (16 mei 2013). TIBCO biedt gratis R naar de onderneming. computer wereld. Ontvangen 20 juli 2015.
  93. ^ "Huis". mran.microsoft.com. Opgehaald 22 november 2021.
  94. ^ "Microsoft R Open: de verbeterde R -distributie". Opgehaald 30 juni 2018.
  95. ^ "Kijkend naar de toekomst voor R in Azure SQL en SQL Server". 30 juni 2021. Opgehaald 7 november 2021.
  96. ^ "Lokale R -gebruikersgroepdirectory". Revolutions blog. Opgehaald 12 mei 2018.
  97. ^ Een lijst met R -conferenties en vergaderingen. Springende rivieren. Opgehaald 12 mei 2018.
  98. ^ "Officiële website van Whyr? Conferentie". Waarom?. Opgehaald 26 juni 2019.
  99. ^ "Satrdays -lijst". Satrdays. Opgehaald 26 juni 2019.
  100. ^ "R Project voor statistisch computergebruik". Ontmoeten. Opgehaald 12 mei 2018.
  101. ^ "R dames". R dames. Opgehaald 12 mei 2018.
  102. ^ "Forwards". Opgehaald 23 maart 2020.
  103. ^ a b "R: Conferenties". r-project.org. 1 november 2019. Opgehaald 19 november 2019.
  104. ^ "Gebruiker! 2004 - de R -gebruikersconferentie". 27 mei 2004. Opgehaald 9 september 2018.
  105. ^ R Project (9 augustus 2013). "R-gerelateerde conferenties". Opgehaald 15 augustus 2019.
  106. ^ Burns, Patrick (27 februari 2007). "Vergelijking van R met SAS, Stata en SPSS" (PDF). Opgehaald 18 september 2013.
  107. ^ R als concurrentie voor commerciële statistische pakketten
  108. ^ Muenchen, Robert (19 juni 2017). "De populariteit van data science software". Opgehaald 21 november 2018.
  109. ^ "R vs. SPSS".
  110. ^ Morgan, Timothy Prickett (2011-02-07). "'Red Hat for Stats' gaat teen tot teen met SAS". Het register, 7 februari 2011. Opgehaald uit https://www.theregister.co.uk/2011/02/07/Revolution_R_Sas_challenge/.
  111. ^ "Het analyseren van gegevens van klinische proeven voor FDA -inzendingen met R". Revolutie -analyse. 14 januari 2009. Opgehaald 20 september 2018.
  112. ^ Sirosh, Joseph. "Microsoft sluit de acquisitie van Revolution Analytics af". blogs.technet.com. Microsoft. Opgehaald 20 september 2018.
  113. ^ "Introductie van R Tools voor Visual Studio". Opgehaald 20 september 2018.
  114. ^ Big Data Appliance van Oracle Corporation
  115. ^ Chris Kanaracus (2012); Oracle Stakes claims in R met geavanceerde analyse lancering, PC World, 8 februari 2012.
  116. ^ Doug Henschen (2012); Oracle Stakes claims in R met geavanceerde analyse lancering, InformationWeek, 4 april 2012.
  117. ^ "Wat is er nieuw in IBM Infosphere Biginsights v2.1.2". IBM. Gearchiveerd van het origineel op 6 september 2014. Opgehaald 8 mei 2014.
  118. ^ "IBM Puredata -systeem voor analyses" (PDF). IBM. Gearchiveerd van het origineel (PDF) op 17 mei 2014. Opgehaald 8 mei 2014.
  119. ^ TIBCO. "Ontketen de behendigheid van R voor de onderneming". Opgehaald 15 mei 2014.
  120. ^ "Validr op Mango -website". Opgehaald 24 september 2018.
  121. ^ Andy Nicholls bij Mango Solutions. "Validatie onderneming: een R -validatiekader ontwikkelen" (PDF). Opgehaald 24 september 2018.
  122. ^ FDA. "Statistische software verduidelijking verklaring" (PDF). Food and Drug Administration. Opgehaald 24 september 2018.
  123. ^ "Een inleiding tot R. Opmerkingen over R: een programmeeromgeving voor gegevensanalyse en grafische afbeeldingen" (PDF). Opgehaald 3 januari 2021.
  124. ^ R Development Core Team. "Opdrachten met de = operator". Opgehaald 11 september 2018.
  125. ^ De meest gebruikte toewijzingsoperator in R is <-
  126. ^ Kabacoff, Robert (2012). "Quick-R: door de gebruiker gedefinieerde functies". statMethods.net. Opgehaald 28 september 2018.

Externe links