Czy ta ścieżka dotyczy struktur danych R, takich jak wektory i ramki danych?
Nie przede wszystkim. Własne typy danych R to wektory atomowe, listy (które można zagnieżdżać), macierze, ramki danych i czynniki. To je omawia większość przewodników po strukturach danych w R i ich uczy kurs R w Coddy. Ta ścieżka dotyczy znaczenia informatycznego: stosów, kolejek, list wiązanych, tablic mieszających, kopców, drzew trie, drzew i grafów, zbudowanych w R, a potem użytych do sortowania, rekurencji i algorytmów grafowych.
Czy R nadaje się do nauki algorytmów i struktur danych?
Działa, choć z pewnym oporem. R powstał z myślą o zwektoryzowanej statystyce, a nie o strukturach złożonych z połączonych węzłów, więc lista wiązana czy drzewo wymagają więcej namysłu niż w Pythonie, a rozmowy rekrutacyjne rzadko odbywają się w R. Dla analityka ten opór jest właśnie wartością: wiedza, że powiększanie wektora w pętli jest kwadratowe albo że środowisko to mapa haszująca, sprawia, że kod w R skaluje się do prawdziwych danych.
Jak zrobić mapę haszującą w R?
Za pomocą środowiska: h <- new.env(), potem h[[key]] <- value, żeby zapisać, i h[[key]], żeby odczytać, co dla brakującego klucza daje NULL. Środowiska są haszowane, mają klucze tekstowe i semantykę referencyjną, więc funkcja, która zmienia środowisko, zmienia je także dla wywołującego, inaczej niż wektor czy lista. Nazwana lista wygląda jak słownik, ale zachowuje się jak wartość: zmień ją w funkcji, a kopia wywołującego pozostanie nietknięta.
Czy głęboka rekurencja w R kończy się błędem?
Może. Domyślnie options(expressions = 5000) ogranicza, jak głęboko może się zagnieżdżać ewaluacja, a głęboka rekurencja, na przykład przeszukiwanie w głąb wzdłuż długiego łańcucha, zatrzymuje się błędem evaluation nested too deeply. Podniesienie tej opcji daje trochę miejsca, ale niezawodnym rozwiązaniem jest jawny stos w pętli, czyli struktura budowana w kroku pierwszym.
Które kursy z tej ścieżki nie są prowadzone w R?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie, prowadzone w Pythonie, oraz operacje na bitach, prowadzone w C++. Są wymienione po krokach, każdy z linkiem, który otwiera go w jego własnym języku. Programowanie dynamiczne przekłada się wprost, bo tablica memoizacji w R to wcześniej zaalokowany wektor, a &, |, ^ i << z C++ stają się funkcjami bitwAnd, bitwOr, bitwXor i bitwShiftL.
Czy muszę znać R, zanim zacznę tę ścieżkę?
Przynajmniej wektory, listy, funkcje, pętle i indeksowanie od 1. Jeśli to dla ciebie nowość, kurs R w Coddy najpierw cię tam doprowadzi, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.