Ce parcours porte-t-il sur les structures de données de R, comme les vecteurs et les data frames ?
Pas principalement. Les types de données propres à R sont les vecteurs atomiques, les listes (qui s'imbriquent), les matrices, les data frames et les facteurs ; c'est ce que couvrent la plupart des guides sur les structures de données en R, et le cours R de Coddy les enseigne. Ce parcours prend le sens de l'informatique : piles, files, listes chaînées, tables de hachage, tas, tries, arbres et graphes, construits en R puis utilisés pour le tri, la récursivité et les algorithmes de graphes.
R est-il adapté aux structures de données et aux algorithmes ?
Cela fonctionne, avec quelques frictions. R est conçu pour les statistiques vectorisées, pas pour des structures faites de nœuds chaînés, donc une liste chaînée ou un arbre demande plus de réflexion qu'en Python, et les entretiens de code se passent rarement en R. Pour un analyste, ces frictions sont justement l'intérêt : savoir qu'agrandir un vecteur dans une boucle est quadratique, ou qu'un environnement est une table de hachage, c'est ce qui permet au code R de tenir face à de vraies données.
Comment créer une table de hachage en R ?
Avec un environnement : h <- new.env(), puis h[[key]] <- value pour stocker et h[[key]] pour lire, ce qui renvoie NULL pour une clé absente. Les environnements sont hachés, indexés par des chaînes et ont une sémantique de référence : une fonction qui en modifie un le modifie aussi pour l'appelant, contrairement à un vecteur ou à une liste. Une liste nommée ressemble à un dictionnaire mais se comporte comme une valeur : modifie-la dans une fonction et la copie de l'appelant reste intacte.
Une récursion profonde échoue-t-elle en R ?
Cela peut arriver. Par défaut, options(expressions = 5000) limite la profondeur d'imbrication de l'évaluation, et une récursion profonde, comme un parcours en profondeur le long d'une longue chaîne, s'arrête sur une erreur evaluation nested too deeply. Augmenter l'option donne un peu de marge ; la solution fiable est une pile explicite dans une boucle, la structure que tu construis à l'étape un.
Quels cours de ce parcours ne sont pas enseignés en R ?
Trois : la programmation dynamique et la série d'entretiens en Python, enseignées en Python, et la manipulation de bits, enseignée en C++. Ces trois cours figurent après les étapes, chacun avec un lien qui l'ouvre dans son propre langage. La programmation dynamique se transpose directement, une table de mémoïsation en R étant un vecteur préalloué, et les &, |, ^ et << de C++ deviennent les fonctions bitwAnd, bitwOr, bitwXor et bitwShiftL.
Faut-il connaître R avant de commencer ce parcours ?
Au minimum les vecteurs, les listes, les fonctions, les boucles et l'indexation à partir de 1. Si c'est nouveau pour toi, le cours R de Coddy t'y amène d'abord, gratuitement, et ce parcours prend le relais là où il s'arrête.