# 1
d <- read.csv("my_data_file.csv")
# 2
d <- d %>% filter(id != "241269-1212")
# 3
d <- d %>%
mutate(s=factor(c("M", "F"))[as.numeric(substr(id,nchar(id),nchar(id))) %% 2])Comments - what to
1 Kommentarer der giver mening
Hvilke kommentarer ville være relevante her?
Kom med forslag til kommentarer til denne kode … tænk ‘hvad’ og ‘hvorfor’
Forslag til meningsfyldte kommentarer
# ?? comments necessary ??
d <- read.csv("my_data_file.csv")
# excluded as participant entered an invalid CPR number
d <- d %>% filter(id != "2321369-1212")
# set 's' to F(emale) or M(ale) depending on odd/even id number in CPR
d <- d %>%
mutate(s=factor(c("F", "M"))[as.numeric(substr(id,nchar(id),nchar(id))) %% 2 + 1 ])I forhold til de tre linjer kode i øvelsen herover:
- unødvendigt med en kommentar til den første linje – koden er selv-forklarende
- en god ide med en kommentar til anden linje der forklarer hvorfor man sletter det pågældende CPR nummer
- en god iden med en kommentar til tredje linje derforklarer hvad koden gør for det er ikke indlysende!
Kode linje 3 er lidt kompliceret (med vilje) men kort fortalt: Den beregner en ny variable s som enten er ‘M’ eller ‘F’ for hhv ulige og lige CPR numre. Hvis du gerne vil forstå kode:
Hvis
ider en tekst-string for et CPR nummer, kigger koden to det sidste tegn (substr(id,nchar(id),nchar(id))), konverterer det til en talværdi (as.numeric) og beregner modulus 2 (%% 2), altså heltals-resten ved division med to (som bliver0for lige tal og1for ulige tal), så lægger den 1 til (+1) og bruger tallet (som altså nu er1for CPR numre med lige tal og2for CPR numre med ulige tal), og sætterstil index 1 eller 2 af faktorenfactor(c("F", "M"))– det fungerer fint, men det var ikke selv-indlysende, vel?.
1.1 Kommentér din kode
Hovedpointer
- Altid føj kommentarer til din kode
- Kommentarer skulle forklare ‘hvorfor’ (dit rationale)
- Med god kode, bliver ‘hvordan’ selv-indlysende
- ..men hvis din kode ikke kan være selv-indlysende: så forklar hvordan den fungerer i kommentarer