Kom godt i gang med R-programmering

Er du hooked på statistik og kan Excel ikke klare jobbet, så læs med på R-programmeringssproget.

Artikel top billede

(Foto: Computerworld)

Af Tom Madsen, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Velkommen til denne artikel om programmeringssproget og softwaren R. R er en softwarepakke og programmeringssprog, der er rettet imod anvendelser inden for statestik. R-sproget blev udviklet i de tidlige 1990’ere af Ross Ihaka og Robert Gentleman og er baseret på S, der er et andet programmeringssprog til statistik udviklet i Bell Labatorierne i 70’erne. R er et open source projekt under GNU, det er derfor gratis at downloade og bruge.

I skrivende stund er den seneste version af R, version 3.1. At R har kvaliteter kan man se af, at universiteterne såsom Københavns Universitet bruger R i deres kurser om statistik. Betyder det, at man skal være uddannet statistiker for at kunne bruge det? Nej. At R bliver brugt af statistikere, kan man se ud fra R projektets hjemmeside, hvor du kan downloade et R tidsskrift kaldet ’The R Journal’.

Af artiklerne i det, kan du se, at R bliver brugt til nogle MEGET tunge videnskabelige beregninger, men R bliver ligeledes brugt til ganske almindelig dataanalyse. Nu kan du selvfølgelig spørge dig selv, hvad der er i vejen med Excel? Ingenting. Excel og R er rettet imod forskellige anvendelser, og hvis Excel opfylder dine behov for dataanalyse, så skal du naturligvis bare fortsætte med det. Fordelen ved R er, at du har et værktøj, der kan bruges til at udvikle deciderede programmer til analysen. Det, og at R har analytiske funktioner, du ikke finder i Excel.

R er ikke den eneste softwarepakke, der er rettet imod statistiske anvendelser. Blandt statistisk software er der SAS fra SAS Institute. Men software som Mathemnatica og Maple har også statistik indbygget, men kun som en del af et større hele. R er til statistik, og kun statistik. Det betyder, at softwaren kan optimeres til det formål og i modsætning til SAS, så er R gratis at bruge.

Du kan se, hvordan R ser ud, lige når du åbner det på figur 1. Lad dig ikke narre af, at det ligner noget tilbage fra Windows 3.0 tiden! Bare rolig, der findes et utal af udvidelser til R, der giver dig et fuldt IDE, som du kender det fra f.eks. Visual Studio. Min personlige favorit er Rstudio. Du kan se, hvordan Rstudio ser ud på Figur 2. Der findes en del forskellige IDE’er til R.

Hvis du bruger Linux og Emacs, så findes der en udvidelse til Emacs kaldet ESS. ESS står for ’Emacs Speaks Statistics’. Jeg foretrækker Rstudio, fordi det er udviklet kun til R, mens en del andre IDE’er har R tilføjet, men er ikke de primære sprog for IDE’et. Jeg anbefaler, at du prøver nogle forskellige muligheder for at finde lige præcis det IDE, der passer til dig.

R-projektet har levet en stille tilværelse siden sin start, men er blevet umådeligt vigtigt i de seneste år på grund af Big Data, alle de fordele der kommer med det. Her kommer R ind i billedet, da det har alle værktøjerne til at analysere al den data, vi producerer på en daglig basis. At R er trådt frem på scenen kan også ses af, at for eksempel Oracle bundler R i nogle af deres softwareprodukter.

Udover selve R-softwaren, så er der udviklet et utal af pakker, der løser alle mulige forskellige opgaver. Disse pakker er udviklet af brugerne af R. Så hvis du løber ind i et problem, som du skal løse, så er du garanteret ikke den første, der har haft det problem. Defor giver det mening at tage et kig på de pakker, man kan tilføje til R. På figur 3, kan du se et lille udsnit af dem. Der findes tusinder af dem. Figur 2 og 3, er alle sammen skærmdumps fra Rstudio. Alle de skærmdumps, du ser fra nu af, kommer fra Rstudio.

Den vigtige hjælpefunktion

Noget af det vigtigste, når man skal lære et nyt programmeringssprog, er at finde ud af, hvordan hjælpefunktionerne fungerer. R kommer naturligvis med et integreret hjælpesystem, der er rimeligt nemt at bruge. Prøv f.eks. at taste ?mean i konsolvinduet. I Rstudio vil det åbne siden med hjælp for den funktion, der hedder mean i R.

Man kunne også skrive help(”mean”). Det vil give det samme resultat, bare med mere tastearbejde. Du kan søge efter emner på samme måde. Prøv at taste ??plotting. Det vil åbne en liste med emner i hjælp, der omhandler plotting. Inden vi går videre, så skal vi lige tage et kig på plotting. For R kommer selvfølgelig med muligheder for at lave grafisk billeder af det talmateriale, som man er igang med at analysere.

Prøv at taste example(plot), i konsolen. Taster retur, for at se det første eksempel, tast retur igen for at se det næste. Der er fire i alt. De ser måske lidt ’rå’ ud, men du skal huske på, at R er udviklet til videnskabelige statistiske formål, og ikke til præsentationer til den øverste ledelse. Når det er sagt, så er der ikke noget til hinder for, at du kan peppe dem lidt op. Tag f.eks. et kig på www.d3js.org. Det er et javascript bibliotek rettet imod at omdanne et talmateriale til en grafisk repræsentation.

Mange af de eksempler, du kan finde på forsiden, er lavet på bagrund af R. I slutningen af denne artikel vil jeg give dig nogle bøger, du kan bruge til at komme videre med R, inklusiv integration mellem R og D3js.

Inden vi går videre til nogle mere hardcore R kodeeksempler, så skal vi lige runde selv R -proget. R er et fortolket programmerings- sporg. Det vil side, at det ikke bliver kompileret som f.eks. C# gør det. Den gængse visdom siger, at fortolkede sprog er langsommere end dem, der er kompilerede.

Betyder det, at R er langsom at bruge til analyser? Nej. Finten ved R er, at R bringer hele det talmateriale, der skal analyseres ind i ram. Det betyder, at R er fantastisk hurtig, men det betyder også, at hvis det datamateriale, du skal analysere, fylder meget, så skal du tage højde for det. Her kommer der en anden fordel ved Rstudio ind i billedet. Rstudio kan forbinde sig til en R-installation, der kører på en server, der har al den ram, du kunne ønske dig. På den måde kan du lave analyser fra din laptop, på en server med hundredvis af gigabyte ram.

I gang med R-kode

Lad os komme i gang med at skrive noget R-kode. Prøv at skrive mean(1:5) i konsolen. Du skulle gerne få resultatet tre tilbage fra R. mean() er en funktion, der beregner gennemsnittet af et sæt af værdier. I det her tilfælde giver jeg funktionen 1:5. Den notation giver funktionen det, som R betragter som en vektor bestående af værdierne 1 til 5.

Helt basalt, så kan man betragte R som videnskabelig regnemaskine på steroider. R kommer med alle de regnefunktioner, du kender. Prøv nu at taste 1:5 + 6:10. Ud kommer der 7 9 11 13 15. Hvad er nu det for noget? Fordi R betragter de to tal serier som vektorer, så bliver de lagt sammen individuelt. Det vil sige, at 1 fra serien 1:5, bliver lagt sammen med 6 fra serien 6:10, 2 med 7 og så videre.

Hvis du i løbet af dine eksperimenter med R løber ind i noget, der virker underligt, så tjek hvordan du har angivet data til de R-funktioner, du bruger. R har alle de matematiske funktioner, du kunne ønske dig, inklusiv funktioner fra trigonometri.

Når man skal tildele værdier til variable i R, så sker det ved enten at bruge =, som du kender det eller <-. For historiske grunde, så er <-, den foretrukne metode. Prøv nu at taste y <-10 i konsollen. Hvis du bruger Rstudio, så vil du kunne se en liste over de variabler, du har erklæret i R i øverste højre vindue.

På figur 4 kan du se en serie af variabler, jeg har erklæret i Rstudio. Den feature i Rstudio gør underværker for at bevare overblikket under udvikling af et længere R-program. Prøv nu at taste y * 3 ind. Du skulle nu meget gerne få værdien 30 ud. Hvad sker der nu, hvis du bruger den samme variable y og giver den værdien 20? Så forsvinder den oprindelige værdi 10, og y har nu værdien 20. lad os prøve noget lidt mere komplekst.

R kommer med de boolske værdier: TRUE og FALSE, og hvor vi gerne vil have en vektor med resultatet af en sammenligning af en vektor med en værdi, så sker det på denne måde: (x <- 1:10 >= 5). Vi tager den et skridt af gangen. Det første, der sker, er at variablen x får tildelt en vektor med tallene 1 til 10. Det næste der sker er, at den vektor med værdierne 1 til 10 bliver sammen-lignet med 5. Det sker ved, at tallene et for et bliver sammenlignet. Altså 1 bliver sammen-lignet først, og fordi det ikke er større end eller lig med 5, så får den sammenligning værdien FALSE.

Hvis du prøver at eksekvere koden, så vil R give dig en vektor med FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE. Hvad nu hvis du gerne vil have en vektor med værdier, der bevæger sig nedaf, altså istedet for 1 til 10, skulle det være 10 til 1? Nemt, det eneste, du behøver at gøre, er at vende rækkefølgen om i vektoren: 10:1, og voila en vektor med tal fra 10 og ned til 1.

På figur 5 kan du se et kort R-program med kommentarer til, hvad der sker i de enkelte linjer kode. Prøv at taste det ind og se, om du kan gætte hvad resultatet er af de enkelte linjer. Jeg bruger nogle funktioner, som jeg ikke har beskrevet i artiklen, så her er muligheden for at øve dig i at bruge hjælpesystemet til at finde ud af, hvad de gør.

Det her var en hurtig introduktion R, med nogle simple eksempler. Hvis du gerne vil vide mere, så kan jeg anbefale bogen Learning R fra O’Reilly. For yderligere information om hvordan du integrerer R med 3Djs, er der bogen Pro Data Visualization using R and JavaScript fra Apress. Hvis du stiler imod en karriere i Big Data og Business Intelligence, så er indsatsten i at lære R givet godt ud! God fornøjelse.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Den gænge visdom siger, at fortolkede sprog er langsommere end dem, der er kompilerede. Betyder det, at R er langsom at bruge til analyser? Nej.

[/themepacific_accordion_section]
[/themepacific_accordion]

Læses lige nu
    Computerworld Events

    Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

    Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
    Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
    Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
    Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

    Sikkerhed | Online

    Cyber Briefing: AI kan udnytte dine VPN‑svagheder og lække dine data på sekunder

    AI-agenter arbejder konstant og i maskinhastighed. Klassiske VPN-modeller mister overblik, kontrol og sporbarhed. Hør hvordan adgang, handlinger og automatisering sikres i en AI-drevet virkelighed. Tilmeld dig nu

    Digital transformation | København

    Roundtable: Fra legacy til AI – de strategiske valg for digitale ledere

    Legacy-systemer bremser mange AI-ambitioner. Digitale ledere skal vælge platform, tempo og arkitektur. Computerworld samler CIO’er og CTO’er til lukket roundtable om vejen fra legacy til AI-parat forretning. Få perspektiver fra COWI og del...

    Infrastruktur | København

    Cloud & infrastruktur 2026: AI, afhængighed og digital handlefrihed

    Cloud er strategisk infrastruktur og fundament for AI, drift og innovation. Geopolitik og regulering ændrer leverandørvalg og dataplacering. Computerworld samler beslutningstagere om afhængighed, europæiske alternativer og digital handlefrihed.

    Se alle vores events inden for it

    Navnenyt fra it-Danmark

    Norriq Danmark A/S har pr. 1. februar 2026 ansat Michael Benner som Senior Solution Architect. Han skal især beskæftige sig med Microsoft Fabric Accelerator Framework herunder videreudvikling af frameworket, kundeimplementeringer og pre-sales opgaver. Han kommer fra en stilling som løsningensarkitekt hos Columbus Data & AI. Han er uddannet Økonomistyring fra Aalborg Universitet. Han har tidligere beskæftiget sig med at være ansat i revisionsbranchen hos PwC Forensic og Deloitte Forensic. Nyt job

    Michael Benner

    Norriq Danmark A/S

    Renewtech ApS har pr. 15. marts 2026 ansat Per Forberg som Account Manager for Sustainable Relations. Han skal især beskæftige sig med etablere nye partnerskaber med henblik på ITAD og sourcing kontrakter med hostingvirksomheder og strategiske slutbrugere. Han kommer fra en stilling som Nordic Key Account Manager hos Tesa. Han er uddannet hos Lund University og har en MBA i Management. Han har tidligere beskæftiget sig med at styrke salgsaktiviteter og partnerskaber på tværs af nordiske markeder. Nyt job

    Per Forberg

    Renewtech ApS

    Khaled Zamzam, er pr. 1. marts 2026 ansat hos Immeo som Consultant. Han er nyuddannet i Informationsteknologi fra DTU. Nyt job