Gör detta innan lektion

Lös kapitlen Functional programming och Advanced inputs and outputsDataCamp.

Läs R4DS kapitel 20.5-20.7, 21.

Under lektion

Gör övningarna i R4DS kapitel 21.5.3.

En likelihood-funktion

Om \(x\) är en vektor av \(n\) oberoende \(Exponential(\lambda)\)-fördelade variabler ges likelihood-funktionen för \(\lambda\) av \[ L(\lambda)= \prod_{i=1}^n\lambda\exp(-x_i\lambda) \] Denna kan beräknas för ett givet värde på \(\lambda\) med funktionen

L_exp <- function(x, lambda) prod(dexp(x, lambda))

vi provar med

set.seed(1)
x <- rexp(100, 1)
L_exp(x, 1)
## [1] 1.730976e-45

vilket verkar fungera bra. Om vi vill plotta funktionen behöver vi bestämma den för en sekvens \(\lambda\)-värden, vi provar:

lambda <- seq(0.5, 2, length.out = 10)
L_exp(x, lambda)
## [1] 7.026489e-50

Istället för en vektor med 10 värden får vi en skalär, vilket tal är detta? Använd map_dbl för att bestämma vektorn \((L(\lambda_1), \ldots, L(\lambda_{10}))\).

Meste regissören

Modifiera vid behov funktinen repertoar från HW5 så att den genererar ett lämpligt resultat ifall det saknas repertoar ett givet år. Använd den sedan i kombination med t.ex. map och map_df för att skapa en data.frame med alla uppsättningar från 1908-2017. Vem har regisserat flest?

SHL-spelare igen

Funktionen get_player nedan hämtar data på en SHL spelare givet en url av typen "http://www.shl.se/lag/087a-087aTQv9u__frolunda-hc/qQ9-a5b4QRqdS__ryan-lasch"

get_player <- function(url){
    response <- GET(paste0(url, "/statistics"))
    player_xml <- content(response, "text") %>% 
        read_html(player_page)
    css <- list(".rmss_c-squad__player-header-name-h", # Namn
                ".rmss_c-squad__player-header-name-info-position", #Position
                ".rmss_c-squad__player-header-info-items-item-value") # Info
    map(css, html_nodes, x = player_xml) %>% 
        map(html_text) %>% 
        unlist() %>% 
        set_names(c("Namn", "Position", "Födelsedatum", "Ålder", "Nationalitet", "Längd", "Vikt", "Skjuter"))
}

se till att den ger lämpligt felmeddelande ifall GET-anropet misslyckas (i ett lyckat anrop ges response$status_code värdet 200). Konstruera en ny funktion, get_team, som givet en url av typen "http://www.shl.se/lag/2459-2459QTs1f__djurgarden-hockey/roster" genererar en data.frame med lagets spelare och information från get_player.