Per una migliore visione, attiva JavaScript

Giocatori, data, ID e altro di una partita/set/leg

Come ottenere queste informazioni con funzioni specifiche

 ·  🕘 5 min lettura  ·  🤖 Matteo Miotto

Dopo aver visto in questo post come creare una partita, oggi analizziamo tutte le funzioni che ci permettono di maneggiare l’oggetto salvato di classe match2p e le relative sottoclassi (non vi preoccupate se non ve le ricordate, questo schema vi aiuterà).

SaveMatch

Se una volta finita la partita si decide di salvare il risultato (l'oggetto match2p che si è creato) si potrebbe tranquillamente salvare l'intero environment in un file .RData; ma c'è un modo più pratico: usare la funzione `saveMatch`.
La praticità di questa funzione risiede in 3 caratteristiche principali:

  • Salvare la partita designata e non l'intero environment, grazie ai due input da fornire: quale partita e il file di destinazione
  • Creare un file di testo leggibile anche in macchine che non hanno R
  • Occupare meno spazio rispetto al file .RData contenente solo l'oggetto della partita
  • Ma come fa ad occupare meno spazio? Seguendo uno schema preciso e che contiene solo i caratteri necessari; infatti, per ogni leg di ogni giocatore vengono create due righe:

    1. Leg ID, nome del giocatore, se ha iniziato lui (1) o meno (0) quel leg, se quel leg è stato vinto (1) o perso (0)
    2. Sequenza delle frecce tirate separate da una virgola (,)
    Struttura file Match
    Figura 1: Struttura di un leg nel file salvato

    Per esempio, usando il comando saveMatch(match, file = "filename.txt") verrà creato il file filename.txt che conterrà la lista dei leg come in figura 1.

    LoadMatch

    Ovviamente, c’è bisogno di una funzione che trasformi i file salvati con la funzione precedente in oggetti di tipo match2p caricandoli su R. Questa funzione si chiama loadMatch. La sua peculiarità è che può sia avere come input il nome del file, sia non avere alcun input e uscirà una finestra di dialogo tramite la quale selezionare il file.

    Come nel caso della creazione della partita, per usi successivi, è fortemente consigliato lanciare il comando salvando il risultato in una variabile: var <- loadMatch(input)

    Funzioni utili

    Veniamo ora alle funzioni che ci permettono di ricavare informazioni dai match/set/leg. Come reminder, ecco lo schema della struttura delle classi:

    Schema delle classi
    Figura 2: Schema della struttura e delle relazioni tra le classi

    Con questo schema in mente, andiamo a creare vari oggetti di diverse classi e analizziamo quali informazioni possiamo ricavare tramite funzioni specifiche. Con la funzione loadMatch carico un file di una partita (classe match2p), successivamente creo oggetti di classe match1p, set1p e leg1p:

    1
    2
    3
    4
    
    m2p <- loadMatch("match.txt") # match intero
    m1p <- m2p@p1match            # match del giocatore 1
    s1p <- m1p@sets[[1]]          # primo set del giocatore 1
    l1p <- s1p@legs[[1]]          # primo leg del primo set del giocatore 1
    

    Show

    La funzione show è la funzione implicita che R usa quando si lancia come comando il nome di una variabile. Ogni classe ha un modo diverso di presentarsi, pur con alcune caratteristiche comuni:

    Match2p

    1
    2
    
    m2p # oppure
    show(m2p)
    
    Date: 2021-08-27 
    Players: matteo, simone 
     
    Match won by matteo 2-0

    Come si può notare, tutte contengono la data e i/il giocatore/i di riferimento. Quello che cambia è il messaggio sottostante:

  • match2p: chi è il vincitore del match e il punteggio dei set
  • match1p: match vinto/perso, il punteggio dei set e la media delle 3 frecce
  • set1p: set vinto/perso, il punteggio dei leg e la media delle 3 frecce
  • leg1p: leg vinto/perso. Nel caso di vittoria viene mostrato in quante frecce si è chiuso
  • getPlayers

    Se invece si vuole sapere a quale/i giocatore/i fa riferimento un oggetto (chi ha giocato quel match/set/leg), si usa la funzione getPlayers(oggetto). Essa ritornerà un vettore contenente il/i nome/i del/i giocatore/i.

    Per esempio:

    1
    
    getPlayers(m2p)
    
    [1] "matteo" "simone"

    getDate

    Per ricavare la data in cui un certo evento ha preso luogo, la funzione getDate(oggetto) la fornirà in formato YYYY-MM-DD (character).

    In questo caso:

    1
    
    getDate(m1p)
    
    [1] "2021-08-27"

    getWinner

    Per ricavare il vincitore di un match (da usare solo con oggetti di classe match2p) si usa la funzione getWinner(match).

    In questo match:

    1
    
    getWinner(m2p)
    
    [1] "matteo"

    getWin

    Per le altre classi invece si può ricavare se quel match/set/leg è stato vinto o perso usando la funzione getWin(oggetto).

    Vediamo se il leg l1p è stato vinto o perso:

    1
    
    getWin(l1p)
    
    [1] 1

    getID

    Veniamo ora all’ultima funzione di oggi: getID. Può essere utilizzata con tutte le classi come oggetto, e ritornerà l’ID di tale oggetto.
    Ma perchè è importante l’ID? L’ID è l’identificativo unico di un match/set/leg; può servire per vedere quali leg appartengono alla stessa partita o allo stesso set, per collegare due oggetti leg1p (nel caso in cui siano lo stesso leg ma di giocatori diversi).

    Una cosa importante da notare è la struttura dell'ID:

  • l'ID del match è costituito dalla lettera "m" seguita dalla data della partita in formato YYYYMMDD, dal simbolo ":" e dall'ora dell'inizio del match, in formato HHMMSS
  • l'ID del set è formato dall'ID del match corrispondente, seguito dalla lettera "s" e dal numero del set nel match
  • l'ID del leg è formato dall'ID del set di riferimento, seguito dalla lettera "l" e dal numero del leg nel set
  • Ne deriva che dall’ID del leg si può ricavare sia l’ID del set che del match dei quali fa parte.

    Vediamo un piccolo esempio:

    1
    
    getID(l1p)
    
    [1] "m20210827:161940s1l1"

    Conclusioni

    In questo post abbiamo visto un po' di funzioni utili per ricavare varie informazioni dagli oggetti delle classi del pacchetto. Ma tra queste informazioni mancano le statistiche del match, del set o del leg; queste possono essere ricavate con altre funzioni, di cui vi parlerò in un post dedicato.
    Stay tuned!

    Condividi
    Supporta l'autore con

    Matteo Miotto
    SCRITTO DA
    Matteo Miotto
    Genomic Data Science master student

    Contenuto