Questo percorso riguarda le strutture dati di R, come vettori e data frame?
Non principalmente. I tipi di dati propri di R sono vettori atomici, liste (che si annidano), matrici, data frame e fattori; sono ciò che trattano quasi tutte le guide sulle strutture dati in R, e il corso di R di Coddy li insegna. Questo percorso segue il significato informatico: pile, code, liste concatenate, tabelle hash, heap, trie, alberi e grafi, costruiti in R e poi usati per ordinamento, ricorsione e algoritmi sui grafi.
R va bene per algoritmi e strutture dati?
Funziona, con un po' di attrito. R è pensato per la statistica vettorizzata, non per strutture fatte di nodi collegati, quindi una lista concatenata o un albero richiedono più ragionamento che in Python, e i colloqui tecnici si svolgono raramente in R. Per chi analizza dati, quell'attrito è il valore: sapere che far crescere un vettore in un ciclo costa tempo quadratico, o che un environment è una hash map, è ciò che fa scalare il codice R sui dati reali.
Come si crea una hash map in R?
Con un environment: h <- new.env(), poi h[[key]] <- value per memorizzare e h[[key]] per leggere, che restituisce NULL per una chiave mancante. Gli environment usano l'hash, hanno chiavi stringa e semantica per riferimento, quindi una funzione che ne modifica uno lo modifica anche per il chiamante, a differenza di un vettore o di una lista. Una lista con nomi sembra un dizionario ma si comporta come un valore: modificala dentro una funzione e la copia del chiamante resta intatta.
In R la ricorsione profonda fallisce?
Può succedere. Per impostazione predefinita options(expressions = 5000) limita quanto può annidarsi la valutazione, e una ricorsione profonda, come una ricerca in profondità lungo una catena lunga, si ferma con un errore evaluation nested too deeply. Alzare l'opzione ti dà un po' di margine; la soluzione affidabile è una pila esplicita in un ciclo, la struttura che costruisci nel primo passaggio.
Quali corsi di questo percorso non sono insegnati in R?
Tre: la programmazione dinamica e la serie di colloqui in Python, insegnate in Python, e la manipolazione dei bit, insegnata in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio. La programmazione dinamica si traduce direttamente, dato che in R una tabella di memoizzazione è un vettore preallocato, e i &, |, ^ e << del C++ diventano le funzioni bitwAnd, bitwOr, bitwXor e bitwShiftL.
Devo conoscere R prima di iniziare questo percorso?
Almeno vettori, liste, funzioni, cicli e l'indicizzazione da 1. Se sono argomenti nuovi, il corso di R di Coddy ti porta prima a quel punto, gratis, e questo percorso riprende da dove finisce.