kompetanseguiden
Hva er R?
Hva er R – og hvor kan du lære det? I denne artikkelen får du en rask introduksjon til hva R er og hvordan det brukes, mens du i verktøyet øverst kan finne ut hvor og hvordan du kan lære det – basert på dine egne kriterier for læringen.
Tilbake til kompetanseguidens hovedside
R er et programmeringsspråk som hovedsakelig blir brukt til statistiske beregninger og dataanalyse, og er blant annet vanlig å bruke innenfor maskinlæring.
Gunnar Schulze er seniorkonsulent i Data Science i Webstep, og kan fortelle oss litt mer om R.
Hva er det overordnede bruksområdet for R i 2020?Gjennom årene har miljøet for statistisk beregning i R blitt «go to»-verktøyet i vitenskapelige kretser for å gjennomføre oppgaver innen statistiske dataanalyser, klyngeanalyser, maskinlæring og datavisualisering.
Selv om fokuset i stor grad hittil har vært på forskning, er det stadig flere bedrifter som også begynner å anerkjenne egenskapene til R innenfor analyse og interaktiv rapportering i forbindelse med stordata og ETL-operasjoner.
Hva er fordelen med R?Bortsett fra Python er R sannsynligvis det verktøyet eller språket med den største samlingen av fritt tilgjengelige pakker/utvidelser for statistiske beregninger, klyngeanalyser, maskinlæring og visualisering.
Disse pakkene tilbyr inngangsporter til å bruke R på omtrent hvert nivå av programmeringskunnskap – fra nybegynnere til erfarne utviklere, for en mengde brukstilfeller.
R er utvidbar og tilbyr integrasjon med andre programmeringsspråk, som C/C++ og Java, som gir muligheten til å skrive svært effektiv kode som kjører i bakgrunnen av en R-applikasjon.
Hva er ulempene eller begrensningene?Fra et utviklerperspektiv kan R gi litt hodepine ved at det blander forskjellige programmerings-paradigmer, som funksjonell og objektorientert programmering, på en ikke alltid så strukturert måte. Så selv om den umiddelbare læringskurven for R er flat, kan pakking og distribuering av koden uavhengig av operativsystem og arkitektur derfor være litt vanskeligere enn i andre språk.
På grunn av sin kontinuerlige evolusjon bygger R delvis på kode fra andre språk, som C, C++ og Fortran. Selv om denne kompleksiteten vanligvis er skjult for brukeren, kan noen feil på et dypere nivå gjøre feilsøking og prestasjonsprofilering av programmer ganske vanskelig.
Selv om grunninstallasjon av R som oftest fungerer fint på tvers av plattformer, kan det være vanskelig å beholde portabiliteten i pakkeavhengigheter over forskjellige operativsystemer og arkitekturer, spesielt når mange utvidelsespakker er brukt. Virtuelle miljøer og containere kan hjelpe til med å lette dette problemet i praksis.
Hva er typisk å utvikle med R, og hvilke teknologier er vanlig å bruke for å oppnå det?Den mest grunnleggende bruken av R er å utføre statistiske dataanalyser og plotte datavisualiseringer på en reproduserbar måte. Dette innebærer typisk å laste data fra en fil til minne, omforme og transformere dataene, gjennomføre noen nedstrøms-dataanalyser og undersøkelser, og til slutt å lagre resultatet i form av grafer og output-filer på disk.
Ved å bygge på et stort utvalg av utvidelsespakker er det nå også mulig å utføre mer kompliserte oppgaver, som stordata- og parallellprosessering, databaseopptak og -spørring, interaktive visualiseringer og maskinlæring.
I tillegg er det en lang rekke spesifikke pakker for eksempel tidsserieanalyse, graf- og nettverksanalyse og mer feltspesifikke applikasjoner som bioinformatikk.
Hva er kjente eksempler på populære programmer, nettsider eller funksjoner som er utviklet med R?R har tradisjonelt vært brukt som et dataprosesserings- og analyseverktøy i bakgrunnen. Men takket være utviklingen av interaktive rammeverk som R Shiny, er det nå et stort utvalg av løsninger som har blitt implementert som nettlesertilgjengelige applikasjoner.
Hvilke teknologier eller verktøy er det viktig å mestre for å utnytte potensialet i R?Det anbefales sterkt å bruke et interaktivt utviklermiljø. Det integrerte utviklermiljøet (IDE) Rstudio er mye brukt, og kan bli installert på mange systemer direkte via en software manager, som gjør det enkelt å komme i gang.
I tillegg gjør R Markdown-pakken det mulig å generere samlede R- og Markdown-dokumenter, som er ekstremt nyttig for dokumentert rapportering og å gjøre om dataanalyser til Markdown-, HTML- eller PDF-rapporter. R blir også ofte brukt i forbindelse med Jupyter Notebooks, som gir et annet kraftig alternativ for å kombinere kode og dokumentasjon i én enkelt fil.
Til slutt, ved å integrere R med Javascript-, CSS-, Markdown- og HTML-elementer gjør R Shiny-rammeverket det enkelt å utvikle og distribuere interaktive applikasjoner, og utgjør en konkurrent til andre dashbord-løsninger.
Brukere av Matlab eller Octave vil i noen tilfeller se en sterk likhet i syntaks, noe som kan føre til noe forvirring
Hvilke språk ligner, eller er nært knyttet til R?Når det kommer til bruk er R sannsynligvis mest likt språk som Matlab/Octave, Python og Julia. Brukere av Matlab eller Octave vil i noen tilfeller se en sterk likhet i syntaks, noe som kan føre til noe forvirring. Selv om R generelt presterer godt gjennom sine veldig spesifiserte utvidelsespakker, vil for eksempel kjøringen av en «for loop» være betraktelig tregere sammenliknet med den samme koden i Python, som er en viktig forskjell. Vektor- og matriksoperasjoner er på den andre siden kraftigere i R enn andre språk, og det er anbefalt å bruke disse når det er mulig.
Hvordan er vanskelighetsgraden og læringskurven? Hvilke forkunnskaper er det en eventuelt en fordel å ha?I likhet med Python er R et tolket språk som kommer med et interaktivt kommandolinjegrensesnitt. Det gjør det mulig for nybegynnere å begynne å kode og utforske, uten å først måtte lære å kompilere koden og gjøre den kjørbar.
Kombinert med et stort og veldig aktivt samfunn som bidrar med mange bøker, guider og eksempler, gjør dette starten relativt enkel og den umiddelbare læringskurven ganske flat. Brukere av Matlab/Octave eller Python vil kanskje ha en fordel med tanke på likhetene i hvordan programmer samhandler med data og bruker-input, mens programmerere fra andre (objektorienterte) språk kanskje vil ha litt vanskelig for å akseptere noen av Rs særegenheter.
Men generelt vil all programmeringserfaring være en fordel. For bruk av noen av de statistiske funksjonene vil en bakgrunn med annen statistisk programvare (som SPSS) være hjelpsomt, men er ikke en forutsetning.
Kan du si noe om utviklingen og forhistorien til R?R ble utviklet av Ross Ihaka og Robert Gentleman ved Universitetet i Auckland (New Zealand) i 1992, og er hovedsakelig basert på språket S for statistiske beregninger, utviklet av John Chambers i 1976. Ifølge Chambers var ideen bak S å «forvandle ideer til programvare, raskt og trofast». R blir nå utviklet og vedlikeholdt av R Development Core Team.
Hvilke råd kan du gi til en som ønsker å lære seg R?Det anbefales sterkt å laste ned (gratis) IDE-et Rstudio, spesielt for nybegynnere. Det gir et forsprang inn i å bruke R uten for mye hodepine, lar en enkelt organisere og dokumentere kode, og gir flere utviklerverktøy for blant annet feilsøking og versjonskontroll (git).
Et annet råd er å følge et av samfunnene, for eksempel Rbloggers, for inspirasjon og hjelp. R-samfunnet er stort, og sjansene er gode for at et problem (spesielt nybegynnerproblem) allerede har oppstått (og blitt løst).
Avhengig av bruk og erfaring vil forskjellige R-utvidelser være relevante. Men å være kjent med pakkene Ggplot, Dplyr/Tidyr, Data.table, R markdown, Foreach (parallellberegning) og Caret eller H2O (maskinlæring) er nok en fordel i mange tilfeller.
R er gøy, begynn å bruke det!