Når man sidder og laver beregninger i R, er det uundgåeligt at man laver fejl i koden. Man kan spare en masse tid, ved at have nogle rutiner, som gør det så nemt som muligt at finde ud af hvor man har lavet fejlen.

Her er først et par gode råd, og dernæst nogle eksempler på fejl som næsten alle laver.

Tips

Først et eksempel på hvorfor flere korte linjer måske er nemmere at fejlfinde. I begge kodestumper er opgaven at beregne SEM på en række tal, og afrunde til 3 betydende cifre. Hvor har du lettest ved at finde fejlen?

minVektor <- c(1, 5, 4, 6, 3, 6, 2, 4, 5, 3, 2, 1) #opret en vektor med de tal du skal regne på
s <- sd(minVektor) #beregn spredningen
n <- length(minVektor # beregn antal tal
sem <- s / sqrt(n) #beregn sem
signif(sem, 3) #udskriv sem med 3 betydende cifre
Error in parse(text = input): <text>:4:1: unexpected symbol
3: n <- length(minVektor # beregn antal tal
4: sem
   ^

eller

minVektor <- c(1, 5, 4, 6, 3, 6, 2, 4, 5, 3, 2, 1) #opret en vektor med de tal du skal regne på
signif(sd(minVektor) / sqrt(length(minVektor), 3)
Error in parse(text = input): <text>:3:0: unexpected end of input
1: minVektor <- c(1, 5, 4, 6, 3, 6, 2, 4, 5, 3, 2, 1) #opret en vektor med de tal du skal regne på
2: signif(sd(minVektor) / sqrt(length(minVektor), 3)
  ^

Typiske fejl

Og dernæst et par eksempler på typiske fejl

Manglende anførselstegn

mitNavn <- Thomas Bendsen
print(mitNavn)
Error in parse(text = input): <text>:1:19: unexpected symbol
1: mitNavn <- Thomas Bendsen
                      ^

Her mangler anførselstegn rundt om tekststrengen (“Thomas Bendsen”). Her er fejlbeskeden ikke helt tydelig, men den giver en idé om hvor fejlen er.

Variabel ikke defineret

sqrt(y)
Error:
! object 'y' not found

Her prøver man at lave beregninger på en variabel som ikke er defineret (R ved ikke hvad “y” betyder). Fejlbeskeden fra R fortæller præcist hvad der er galt.

Forkerte paranteser

x <- c(1, 5, 8, 9, 3, 6)
sqrt(length(x)
Error in parse(text = input): <text>:3:0: unexpected end of input
1: x <- c(1, 5, 8, 9, 3, 6)
2: sqrt(length(x)
  ^

Her mangler en slutparantes. Fejlbeskeden er næsten klar - linjen slutter uventet, idet R havde forventet yderligere en parantes.

Forkert funktionsnavn

sqr(9)
Error in `sqr()`:
! could not find function "sqr"

Her er en stavefejl i et funktionsnavn. Fejlbeskeden fortæller stort set hvad der er galt.