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:
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:
- Leg ID, nome del giocatore, se ha iniziato lui (1) o meno (0) quel leg, se quel leg è stato vinto (1) o perso (0)
- Sequenza delle frecce tirate separate da una virgola (,)
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.
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:
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:
|
|
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
|
|
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:
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] "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] "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] "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] 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:
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] "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!