732G33 Programmering i R
Kursinformation
VT 2025
Senast uppdaterad 2025-04-30
Allmänt
Hemsidan är under uppdatering för VT2025.
Kurslitteratur 2025: The Book Of R av Tilman M. Davies (TD), 2016. Finns tillgänglig som e-bok via biblioteket
Detta är webbsidan för kursen i programmering med med programmeringspråket R. Denna kurs ges varje vårtermin vid Linköpings universitet. I år samläses 732G33 (programkurs) med 732G83 (fristående kurs)
Lärare: Josef Wilzén(examinator) och Johan Alenlöv
Använda R/Rstudio i SU-salar
Datorlaborationerna är i SU-salarna i B-huset.
Hur startar jag
Rstudio och börjar labbba i en SU-sal?
- Logga in med Liu-ID och lösenord
- Tryck: \(\texttt{Ctrl+Alt+T}\) för att öppna en terminal. Här kan du skriva olika kommandon, dessa aktiveras när du trycker enter.
- Skriv: \(\texttt{module add courses/732G33}\) och tryck enter
- Detta läser in kursmodulen, som innehåller de programvaror som behövs i kursen.
- Skriv \(\texttt{rstudio}\) i terminalen och tryck enter
Innehåll
- Allmän struktur på kursen
- R och Rstudio
- Kursinnehåll
- Undervisningsmaterial och uppgifter
- Inlämningar
- Kursvecka 1
- Kursvecka 2
- Kursvecka 3
- Kursvecka 4
- Kursvecka 5
- Kursvecka 6
- Kursvecka 7
- Kursvecka 8
- Kursvecka 9
- Datortenta
Allmän struktur på kursen
- Kursmaterial på kurshemsidan (denna sida)
- Föreläsningar i sal
- Kommunikation kommer att ske via Teams.
- Seminarier i sal
- Labbar:
- Görs på dator. Antingen egen eller i datorsal på Campus.
- Hjälp kommer att erbjudas under schemalagda tiden.
- Inlämningar kommer att ske på kursen kursrum på Lisam.
- Alla labbar ska redovisas muntligt för lärare/assistent
- Schema finns på timeedit
Microsoft Teams kommer användas för kommunikation, speciellt för frågor kring laborationerna. Teams är ett samarbetsverktyg, som går att använda via webbläsare eller som app på mobil/dator. Appen finns för olika plattformar. Kursen kommer att ha ett eget team, länk till teamet kommer att finnas på kursrummet på Lisam.
Gör följande:
- Installera skrivbordsprogammet för Teams
- Se till att du har tillgång till kursens kursrum på Lisam, detta kräver att du har ett liu-ID och är antagen på kursen.
R och Rstudio
Kursen använder R (själva programmeringsspråket) och Rstudio. Rstudio är ett program som gör det lättare att arbeta med R, en så kallad IDE. Dessa program finns förinstallerade på datorerna i datorsalarna.
Om ni vill jobba på egen dator går det bra, dessa program finns tillgängliga för Windows, Mac och Linux.
- Ladda ner och installera R här, version 4.4.2 eller högre.
- Ladda ner och installera R-Studio här, version RStudio-2024.12.1 eller högre.
Här finns videos om att installera R och R-Studio på Windows, Mac och Linux/Ubuntu
Kursinnehåll
Syftet med denna kurs är att introducera enklare programmeringstekniker med särskilt fokus på programspråket R.
Kursen kommer behandla statistiskt programmering i R. Kursen ger en introduktion till bland annat:
- Installera och använda R / R-Studio.
- Att använda hjälpen i R / R-studio.
- Importera och exportera data
- Datastrukturer och bearbeta data
- Funktioner och dokumentation
- Programmeringsteknik
- Installera och använda R-paket
- Statistik och grafik
- Strängar och datum
- Grundläggande linjär algebra
Undervisningsmaterial och uppgifter
Kursen sträcker sig över 10 veckor, med start vecka 14 (2/4). De första 8 veckorna introducerar en ny del med kursmaterial varje vecka. Den 9:e veckan ägnas åt repetition och kompletteringar. Sista veckan är det en datortenta. När slides eller labbinstruktioner är uppdaterade för 2025 så kommer det att stå uppdaterad efter länken.
De första 8 veckorna kommer att ha en föreläsning och en datorlaboration per vecka.
- Föreläsning Föreläsningen introducerar nya koncept och lägger grunden för datorlaborationen. Till varje föreläsning finns läsanvisningar till kursboken, olika videos och ev. extramaterial.
- Datorlaboration Denna del är den
viktigaste delen av kursen. Vid laborationerna kommer ni att
programmera och lära er lösa problem med och i R. Två delar
- Övningsuppgifter \(\rightarrow\) är mycket viktiga! Lägger grunden för inlämningsuppgifterna och tentan.
- Inlämningsuppgifter
- Seminarier Är till för frågor och interaktion. Lärare löser övningsuppgifter och svarar på frågor från studenterna.
I andra halvan av kursen kommer även ett Projekt att genomföras.
Kursen examineras genom en datortenta och 5 stycken datorlaborationer. Tentan kan ge betygen U, G och VG. Datorlaborationerna kan ge betygen U och G. För att få godkänt på kursen så måste man ha G på datorlaborationerna och tentan, för VG så behöver man även ha VG på tentan.
Återkommande kursmaterial
Referenslitteratur
Advanced R av Hadley Wickham. Denna (online-)bok är inte obligatorisk men kan användas för fördjupning och finns här.
Datorlaborationer
Kursen innehåller 8 datorlaborationer. Länkar till datorlaborationerna finns under respektive kursvecka nedan.
Datamaterialet som används i laborationerna finns att ladda ned här.
Obs! För att ladda ner filerna från github, högerklicka på knappen Raw och välj Spara länk som . . .
Ni kan ansluta till datorsalar på campus hemifrån, se instruktioner här.
Inlämningar
Kursen innehåller totalt 4 inlämningsuppgifter som är obligatoriska att lämna in samt ett projekt.
De två första inlämningsuppgifterna görs individuellt, de två sista samt projektet görs i grupper om två.
För att bli godkänd på inlämningar krävs att ni gör följande:
- Lös uppgifterna i inlämningen. Se till att markmyassignment inte ger några fel.
- Redovisa uppgifterna muntligt för en labassistent/lärare under någon datorlaboration.
- När ni fått okej från labassistent/lärare kan ni ladda upp er lösning på Lisam.
- Exakt deadline för olika inlämningar finns på Lisam under Inlämningar.
För projektet räcker det med inlämning i Lisam när man är klar.
Inlämningsuppgift 1: PDF R mall (Uppdaterad för VT25)
- Uppgifter baserat på material från kursvecka 1 till 2
- Mjuk deadline: 13 april (= föreslagen arbetstakt)
- Hård deadline: 20 april
Inlämningsuppgift 2: PDF R mall (Uppdaterad för VT25)
- Uppgifter baserat på material från kursvecka 1 till 4
- Mjuk deadline: 27 april
- Hård deadline: 4 maj
Inlämningsuppgift 3: PDF R mall (Uppdaterad för VT24)
- Uppgifter baserat på material från kursvecka 1 till 6
- Mjuk deadline: 11 maj
- Hård deadline: 18 maj
Vecka 1: Introduktion, vektorer, logik och kort om funktioner - startar 1/4
Slides: Föreläsning 1 (Uppdaterad för VT25)
R demo:
Demo från föreläsningen F1_demo.R
Kursbok:
- INTRODUCTION
- 1.2.2 - 1.4.2
- 2
- 4.1-4.2
- 6.1.1-6.1.3
- A.1 (appendix)
- B.1 (appendix)
- Generellt kolla: Important Code in This Chapter i slutet av de berörda kapitlen
Video:
- RP:
- GD:
- Logik och logiska värden:
Vecka 2: Datastrukturer och databearbetning, (I)nput/(O)utput - startar 7/4
Innehåll
Denna vecka kommer vi
att titta närmare på olika datastrukturer (=sätt att organisera data),
hur vi kan hantera data och hur vi gör för att läsa data från hårddisken
till R och skriva data till hårddisken.
Slides: Föreläsning 2 (uppdaterad 2025)
Seminarium: (uppdaterad 2025)
Kursbok:
- 3.1-3.2, 3.3.3-3.3.4, 3.4 Matrices and arrays
- 4.3 Factors
- 5 Lists and data.frames
- 8.1-8.3.1 Reading and writing files
- Generellt kolla: Important Code in This Chapter i slutet av de berörda kapitlen
Video:
- RP:
- GD:
Vecka 3: Programkontroll - villkorssatser och loopar - startar 14/4
Denna vecka kommer studera sätt att styra programmeringskod med hjälp av villkorssatser och olika typer av loopar.
Slides: Föreläsning 3 (Uppdaterad för 2025)
R demo:
Demo från föreläsningen F3_demo.R
Seminarium: (Uppdaterad för 2025)
Kursbok:
- 10 Conditions and Loops
- 12.1.1
Video:
- RP:
- GD:
Vecka 4: Mer om funktioner, programmeringsteknik och R-paket - startar 21/4
Denna vecka kommer vi att fördjupa oss i funktioner, hur vi skriver kod på ett bra sätt, R-paket mm.
Slides: Föreläsning 4 (Uppdaterad för VT25)
Seminarium: (uppdaterad för 2025)
Koden hittar ni här
Kursbok:
- 9 Calling funcitons
- 11 Writing functions
- 12 Exceptions, timings and visibility
Annan läsning:
- Best practices for scientific computing av Greg Wilson et. al. Denna artikel finns tillgänglig här.
- Tidyverse Style Guide
Video:
- RP:
- GD:
- R 3.2 - The apply() Family of Functions
- R 4.1 - Basic Structure of a Function
- R 4.2 - Returning a List and Providing Default Arguments
- R 4.3 - Add a Warning or Stop the Function Execution
- R 4.4 - Passing Additional Arguments Using an Ellipsis
- R 4.5 - Make a Returned Result Invisible and Build Recursive Functions
- R 4.6 - Custom Functions With apply()
- övrigt:
Vecka 5: Grundläggande grafik, beskrivande statistik, Rmarkdown och externa datakällor - startar 28/4
Första veckan på del 2, där vi kollar olika tillämpningar.
Denna vecka handlar om basgrafiken i R, externa datakällor och att göra rapporter med Rmarkdown + knitr.
Slides: Föreläsning 5 (uppdaterad VT25)
R demo:
Demo från föreläsningen F5_demo.R
Intro Rmarkdown: Rmd-fil och pdf-fil Notera: Om ni till bygga/knitta/rendera en pdf-fil så behöver LaTex vara installerat på er dator. Se datorlaboration 5 för instruktioner.
Seminarium:
Markdown filen hittar ni här och det tillhörande scriptet finns här observera att ni kan behöva ändra source så den hittar filen, bör fungera om ni har scriptet och markdown filen i samma mapp.
Koden för Monte Carlo simuleringen finns här
Kursbok:
- Basic plotting 7.1-7.3
- Advanced plot customization 23.1-23.2, 23.4
- Common probability distributions 16
Annan läsning:
Video:
- RP:
- övrigt:
Annan läsning:
- R reference card v.2 av Matt Baggot. här
- Base-r här
- R-markdown cheat sheet här
- R-markdown reference guide här
Vecka 6: Objektorientering (OO), linjär algebra och datumhantering - startar 5/5
Slides: Föreläsning 6 (uppdaterad VT24)
Seminarium:
- Objektorientering:
- Skapa klasser
- Geomteriska figurer, kvadrat, triangel
- Skapa egen (ny) generisk funktion
- Area
- Omkrets
- Skapa klasser
- Datum och tid:
- Lite om tidszoner
- Lite om att ändra locale till svenska
- Skapa en funktion som testar om ett datum ligger inom en viss tid från idag.
Lubridate:
- Från R cran: vignette
- Boken R for Data Science: 16 Dates and times
- Dates and Times Cheat Sheet här
- Dates and Times Made Easy with lubridate av Garrett Grolemund och Hadley Wickham. Artikeln finns att ladda ned här Notera att lubridate har fått vissa uppdateringar sen artikeln skrevs.
Objektorientering
- Kursbok: Understanding Types, Classes, and Coercion 6.2
- OO Länk 1
- OO Länk 2: Läs om S3
- OO Fördjupning 1
- OO Fördjupning 2
- OO Fördjupning 3
Vecka 7: ggplot2
, statistik, (linjär regression) -
startar 12/5
Slides: Föreläsning 7
R demo:
Demo från föreläsningen F7_demo.R
ggplot2:
- Video, RP:
- Kursbok: 24 Grammar of graphics
- ggplot2 Overview
- ggplot2 Data Visualization Cheat Sheet
- ggplot2 reference
Statistik:
- 13.2, 18.1-18.4 (fokusera på R-koden, ni måste inte läsa all statistik teori om ni inte vill)
- Video:
Linjär regression (frivilig fördjupning)
- Video om linjär regression (lm) del 1
- Video om linjär regression (lm) del 2
- Se avsnitt i labben om linjär regression.
- Kursboken Kap 20-22
Vecka 8: Text och strängar, databearbetning (dplyr
,
tidy data) - startar 19/5
Slides: Föreläsning 8 (uppdaterad VT24)
R demo:
Demo från föreläsningen F8_demo.R
Sammanfattning av slides för texthantering och regexp: Här
Seminarium:
Exempel på användande av mönstermatchning och databearbetning med piping.
Texthantering:
- Video, RP: Regular Expressions
- stringr: modern, consistent string processing Här
- Introduction to stringr, Här
- Handling and Processing Strings in R (av Gaston Sanchez), Här Kap 1 (hela), 2 (hela), 3.1, 3.3, 4.2.1-4.2.3, 5-5.2.2, 5.2.6, 5.3.1-5.3.2, 6-6.1.3, 6.2.2, 6.4-6.4.10, 7.1, 7.2 (se även labben kaptiel 1)
- Ex på användning av stringr, kolla här
- R for Data Science: 14 Strings
Vecka 9: Repetition - startar 26/5
Slides: Föreläsning 9
Delar av denna tenta kommer att gås igenom under föreläsningen.
Här finns andra gamla tentor.
Seminarium:
Veckas seminarium kommer att vara en frågestund där jag finns tillgänglig för att svara på alla era frågor!
Övrig information
Komplettering av laborationer
Alla inlämningar, inklusive projektet, ska vara godkända för att laborationsdelen på kursen ska bli godkänd. Om ni inte får godkänt på en inlämning så kommer den markeras med komplettering i Lisam.
Följande kompletteringstillfällen finns:
- komp1: Inlämning 1-4, projekt, deadline:
- komp2: Inlämning 1-4, projekt, deadline:
- komp3: Inlämning 1-4, projekt, deadline:
Deadline gäller för inlämning i Lisam, kontakta Johan Alenlöv för muntlig redovisning, kan ske antingen på plats eller via Zoom/Teams.
Om ni inte har lämnat alls på en inlämning och den är stängd:
- Maila då Johan Alenlöv minst 2 dagar innan deadline så får ni er inlämning öppnad för komplettering. Ange vilka laborationer det gäller och vilken grupp som ni tillhör för laborationer på del 2 i kursen.
Vid inlämningen på Lisam: lämna in en fil per laboration. Döp filen enligt formen labb1_josad732_komp1.R om det är laboration 1 och komplettering 1. Om det är del två och ni arbetar i par döp då filen enligt formen labb5_grupp01_komp1.R Notera att kompletteringar ska skickas in under ordinarie inlämningar på Lisam för respektive inlämning
OBS: om inte alla inlämningar är godkända efter den sista kompletteringen så måste labbdelen av kursen göras om nästa gång kursen ges! Detta innebär att alla inlämningar, inklusive projektet måste göras om.
Projekt
Projektet kommer genomföras i två delar. Den behandlar
databearbetning, grafik med ggplot2
och statistik
analys.
Här finns beskrivet i detalj hur projektet ska genomföras.
Här finns en mall för projektet.
Datortenta
Kursen huvudexamination är en datortenta på 5 h.
- 2025-06-11
- 2025-08-14
- Troligen slutet av oktober 2025
Glöm inte att anmäla er i tid! Endast anmälda studenter får plats på tentan.
Tidigare tentor finns att tillgå här. (kommer senare)
Här finns information om datortenta i SU-salar: länk
Hjälpmedel:
Följande cheatsheets kommer finns tillgängliga på tentan:
- Baggott-refcard-v2.pdf
- base-r.pdf
- data-import-cheatsheet.pdf
- data-transformation-cheatsheet.pdf
- ggplot2-cheatsheet-2.1.pdf
- RegExCheatsheet.pdf
- rmarkdown-cheatsheet-2.0.pdf
- rmarkdown-reference.pdf
- rstudio-IDE-cheatsheet.pdf
Efter kursen
Resurser för den som vill lära sig mer efter kursen:
- R for Data Science av Garrett Grolemund och Hadley Wickham, finns här
- Advanced R av Hadley Wickham, finns här.
- R packages av Hadley Wickham, finns här.
- Några fria e-böcker om R finns här
- Här finns en massa länkar med mer lärresurser.
Personal på kursen
- Lärare: Josef Wilzén(examinator) och Johan Alenlöv
- Labbassistenter: Algot Larsson Eskilsson, Hampus Beijer, Duy Thai Pham, Joseph Mumper
- Kursadministratör: Erika Larsson (732G33), Hanan Mohsen (732G83)