Esta trilha é sobre as estruturas de dados do R, como vetores e data frames?
Não é o foco principal. Os tipos de dados próprios do R são vetores atômicos, listas (que podem ser aninhadas), matrizes, data frames e fatores; eles são o que a maioria dos guias de estruturas de dados em R cobre, e o curso de R da Coddy os ensina. Esta trilha segue o significado da ciência da computação: pilhas, filas, listas ligadas, tabelas hash, heaps, tries, árvores e grafos, construídos em R e depois usados em ordenação, recursão e algoritmos de grafos.
R é bom para estruturas de dados e algoritmos?
Funciona, com algum atrito. O R foi feito para estatística vetorizada, não para estruturas feitas de nós ligados, então uma lista ligada ou uma árvore exige mais raciocínio do que em Python, e entrevistas de programação raramente são feitas em R. Para um analista, esse atrito é o valor: saber que fazer um vetor crescer em um laço é quadrático, ou que um environment é um mapa hash, é o que faz o código R escalar para dados reais.
Como fazer um mapa hash em R?
Com um environment: h <- new.env(), depois h[[key]] <- value para guardar e h[[key]] para ler, o que devolve NULL para uma chave ausente. Environments usam hash, têm strings como chaves e semântica de referência, então uma função que altera um environment o altera também para quem a chamou, ao contrário de um vetor ou de uma lista. Uma lista nomeada parece um dicionário, mas se comporta como um valor: altere-a dentro de uma função e a cópia de quem chamou continua intacta.
Recursão profunda falha em R?
Pode falhar. Por padrão, options(expressions = 5000) limita o quanto a avaliação pode se aninhar, e uma recursão profunda, como uma busca em profundidade descendo uma cadeia longa, para com um erro evaluation nested too deeply. Aumentar a opção dá algum espaço; a solução confiável é uma pilha explícita em um laço, a estrutura que você constrói no passo um.
Quais cursos desta trilha não são ensinados em R?
Três: programação dinâmica e a série de entrevistas em Python, ensinadas em Python, e manipulação de bits, ensinada em C++. Eles aparecem listados depois dos passos, cada um com um link que o abre na própria linguagem. A programação dinâmica se traduz direto, já que uma tabela de memoização em R é um vetor pré-alocado, e os &, |, ^ e << do C++ viram as funções bitwAnd, bitwOr, bitwXor e bitwShiftL.
Preciso saber R antes de começar esta trilha?
Vetores, listas, funções, laços e indexação a partir de 1, no mínimo. Se isso for novidade, o curso de R da Coddy te leva até esse ponto primeiro, de graça, e esta trilha continua de onde ele termina.