Leksehjelp i R

It´s Learning starta óg ein plass. Kan eg lage mitt eige verktøy i R for å styrke glosepugginga til gutungen?
learning-english-wordle
Tru ikkje anna: Skal ein 40-åring lære seg noko nytt her i verda, lyt han gjere det på fritida. Det vesle eg har lært meg om programspråket R, har i stor grad skjedd ved å byte ut TV-kvelden med datamaskinen, Stack Overflow og R console.

Då kodeplunderet vert avløyst av at poden trong hjelp med glosane, byrja eg å tenkje at eg kunne slå to floger i ein smekk: Øve på koding og samstundes gjere noko bra for familielivet.

Resultatet blei eit lite gloseprøveprogram. Han får sjølv skrive inn glosane i eit Excel-ark, til dømes dette. Deretter køyrer han R-scriptet mitt som hentar inn glosane. Han kan velje norsk-engelsk eller engelsk-norsk prøve. Programmet veljer glosar i tilfeldig rekkjefølgje. Når alle er unnagjort, får han beskjed om talet på rette og feile svar.

Koden ser du her:

##Gloseprogram
library(gdata)
liste <- read.xls('gloser.xlsx', header=TRUE, stringsAsFactors=FALSE)

# Fjerne tomme radar
droppes <- which(liste=="")
liste <- liste[-droppes,]

# Lag to lister av data.frame liste med norske og engelske glosar.
# Sett alle ord til små bokstavar.
norsk <- liste$Norsk
engelsk <- liste$Engelsk
norsk <- tolower(norsk)
engelsk <- tolower(engelsk)

#Opprette teljesentral for rette og feile svar.
rett <- 0
feil <- 0

cat("Jakobs glosetest.\nSkriv en() for å øve på norsk-engelsk.\nSkriv no() for å øve på engelsk-norsk.\nTrykk Esc for å avbryte. \n")

#Norsk-engelsk
en <- function(nr) {

# Plukke ein tilfeldig glose ved å velje eit tilfeldig tal
# mellom 1 og talet på glosar.
nr <- sample(1:length(norsk))
nr <- nr[1]

#Skrive ut glosen og spørje om svar.
cat(norsk[nr])
word <- readline("Engelsk glose: ")
#Set svaret til små bokstavar. Sidan listene allereie er i minusklar, har vi
#eliminert caps lock-feil.
word <- tolower(word)

#Sjekkar om svaret er det same som i lista.
ifelse(word[1] == engelsk[nr], print("Helt rett!"), print(paste0("Rett svar er ", (engelsk[nr]), ", øv litt mer!")))
cat("\n")

#Viss svaret var rett, auk rett med 1. Viss svaret var feil, auk feil med 1.
ifelse(word[1]==engelsk[nr], rett <<- rett+1, feil <<- feil+1)

#Ta vekk glosen slik at du ikkje blir spurd om han fleire gongar. Sjekk om det er
#fleire glosar att. Viss ikkje, avslutt.

engelsk <<- engelsk[-nr]
norsk <<- norsk[-nr]
ifelse(length(engelsk)<1, print("Da er du ferdig med alle!"), return(en()))
print(paste0("Du hadde ", rett, " rette og ", feil, " feile svar."))
cat("\n\n")
source('gloser.R')
}

#Engelsk-norsk
no <- function(nr2) {
nr2 <- sample(1:length(engelsk))
nr2 <- nr2[1]
cat(engelsk[nr2])
word <- readline("Norsk glose: ")
word <- tolower(word)
ifelse(word == norsk[nr2], print("Helt rett!"), print(paste0("Rett svar er ", (norsk[nr2]), ", øv litt mer!")))
cat("\n")
ifelse(word[1]==norsk[nr2], rett <<- rett+1, feil <<- feil+1)
engelsk <<- engelsk[-nr2]
norsk <<- norsk[-nr2]
ifelse(length(norsk)<1, print("Da er du ferdig med alle!"), return(no()))
print(paste0("Du hadde ", rett, " rette og ", feil, " feile svar."))
cat("\n\n")
source('gloser.R')
}