Этот путь о структурах данных R, таких как векторы и датафреймы?
В основном нет. Собственные типы данных R включают атомарные векторы, списки (которые можно вкладывать друг в друга), матрицы, датафреймы и факторы; именно о них рассказывает большинство руководств по структурам данных в R, и курс R от Coddy их преподаёт. Этот путь про структуры данных в смысле информатики: стеки, очереди, связные списки, хеш-таблицы, кучи, префиксные деревья, деревья и графы, которые пишутся на R, а затем используются для сортировки, рекурсии и алгоритмов на графах.
Подходит ли R для структур данных и алгоритмов?
Подходит, хотя и с некоторыми неудобствами. R создан для векторизованной статистики, а не для структур из связанных узлов, поэтому связный список или дерево требуют больше размышлений, чем на Python, а собеседования по программированию на R проводятся редко. Для аналитика в этих неудобствах и ценность: знание того, что наращивать вектор в цикле квадратично по времени или что окружение является хеш-таблицей, и позволяет коду на R масштабироваться на реальные данные.
Как сделать хеш-таблицу в R?
С помощью окружения: h <- new.env(), затем h[[key]] <- value, чтобы сохранить значение, и h[[key]], чтобы его прочитать; для отсутствующего ключа вернётся NULL. Окружения хешированы, их ключами служат строки, и у них ссылочная семантика, поэтому если функция меняет окружение, оно меняется и для вызывающего кода, в отличие от вектора или списка. Именованный список похож на словарь, но ведёт себя как значение: измените его внутри функции, и копия вызывающего кода останется нетронутой.
Падает ли глубокая рекурсия в R?
Может. По умолчанию options(expressions = 5000) ограничивает глубину вложенности вычислений, и глубокая рекурсия, например поиск в глубину по длинной цепочке, останавливается с ошибкой evaluation nested too deeply. Увеличение этой опции даёт немного запаса; надёжнее заменить рекурсию явным стеком в цикле, то есть структурой, которую вы пишете на первом шаге.
Какие курсы этого пути не преподаются на R?
Три: динамическое программирование и серия по интервью на Python преподаются на Python, а битовые операции на C++. Они перечислены после шагов, каждый со ссылкой, которая открывает курс на его собственном языке. Динамическое программирование переносится напрямую (таблицей мемоизации в R служит заранее выделенный вектор), а &, |, ^ и << из C++ превращаются в функции bitwAnd, bitwOr, bitwXor и bitwShiftL.
Нужно ли знать R, прежде чем начинать этот путь?
Как минимум векторы, списки, функции, циклы и индексацию с 1. Если это для вас новое, курс R от Coddy сначала бесплатно доведёт вас до этого уровня, а этот путь начинается там, где он заканчивается.