Я бы в первую очередь рекомендовал R Inferno . В частности, изучите раздел 3 о векторизации, которая, вероятно, является ключевой концепцией в программировании на R.
Кроме того, я бы поддержал рекомендацию Дирка о книге Джона Чемберса.
Сделаем еще один шаг: язык R является производным от Scheme. Один из лучших способов глубоко понять программирование на R (по сравнению с такими языками, как Java или C) - это изучить функциональное программирование . Для этого лучшим ресурсом может быть SICP (« Структура и интерпретация компьютерных программ », доступный бесплатно в Интернете), который использует Scheme. Вы также можете найти соответствующие видеолекции в Интернете: MIT 6.001 и Berkeley 61a .
Существует Розеттский код , который представляет множество общих задач программирования на разных языках программирования. Затем есть сообщение в блоге Стивена Тернера , в котором перечислены несколько ресурсов для программистов с других языков, например, вы можете найти слайды из Дрю Конвея , который сравнивает Python с R.
Это очень интересный вопрос - R действительно полон идиом, и ситуация усложняется тем, что существует много идиом для анализ данных, в дополнение к более общим программным. В сочетании с выразительностью R и его склонностью к нарушению принципа наименьшего удивления это часто делает кривую обучения немного круче, чем хотелось бы.
Лично я почерпнул большую часть того, что знаю, читая справку, читая различные руководства и сборники советов, а иногда просматривая исходный код встроенных функций. R FAQ содержит полезные лакомые кусочки для начала. Revolution Computing содержит ссылки на хорошие ресурсы, особенно для программистов. Кроме того, я нашел коллекцию советов и ссылок Говарда Селтмана полезными; Могу поспорить, что ссылки на этой странице охватывают самые полезные идиомы R, но мне любопытно посмотреть, что еще есть.
Это может помочь, а может и не помочь вам в поисках R. Но, когда я привык к R, я обнаружил, что словари Matlab для R немного помогли ( т.е. если вы знаете, как использовать Matlab). Кажется, я не могу найти тот, который использовал, но нашел этот , , который, кажется, хорошо иллюстрирует ситуацию.
Легко: 2200+ пакетов и расчет на CRAN :)
На самом деле, шутки в сторону, лучшее описание, которое я читал, было в Chambers ( 2008) .