Почему R - лучший язык программирования (для всех нас)?

Я пользуюсь R более 6 лет. Я познакомился с R на курсе доктора философии по моделированию методом Монте-Карло в финансах, проведенном Вольфгангом Хёрманном. У меня есть предыдущий опыт общения с другими языками; самым последним из них является C ++ (который мне тоже нравится). Но ни один из них не так удобен, как R.

Прежде чем я начну перечислять, почему R - лучший язык для остальных из нас, позвольте мне прояснить «остальную часть нас». Мы, пользователи Excel, пользователи SPSS, а не специалисты по информатике (CS) *; Другими словами, «заказчики программирования», которые стремятся к простоте, но стремятся к мощности и гибкости. R - лучший язык программирования для нас.

Я сделаю несколько сравнений с Python, потому что это ближайший аналог R. Извините заранее, пользователи Python. Я тоже тебя люблю.

* На самом деле, я немного разбираюсь в CS (но совсем немного). Ничего плохого в этом нет :)

1. Готов к работе

Просто скачайте R и установите. Вы можете сразу приступить к программированию. Конечно, будет лучше, если у вас будет такой редактор, как Atom или R Studio. Но даже без них все в порядке.

Если или когда вы работаете с Python, вы увидите, что инициализация не проста. Вы можете запускать скрипт в Shell или использовать IDLE. Вы даже можете использовать упаковщики, такие как Anaconda. Просто попросите новичка установить и запустить несколько команд на Python.

У Python также есть две версии: 2.x и 3.x. Даже если они говорят, что 3.x теперь берет верх (естественно), есть масса вещей, зависящих от 2.x. Путаница начинается с самого начала.

2. Упрощенный дизайн

Язык R изначально разработан не специалистами по CS, а специалистами по статистике. Итак, некоторые очень удобные для всех нас условности могут показаться абсурдными. Приведу простой пример.

Предположим, у нас есть «объект», содержащий буквы A-B-C-D-E. Каждый элемент объекта содержит букву. Назовем его myobject.

В R myobject [1] возвращает «A». В Python он возвращает «B», потому что в Python индекс начинается с 0. myobject [0] возвращает «A». Когда я говорю CS людям, индекс объекта R начинается с 1, они буквально ахают. Допустим, мы можем это пережить. Дальше лучше.

В R myobject [1: 3] возвращает «A», «B», «C», буквально означает индекс от 1 до 3. В Python он возвращает «B», «C», потому что конечная точка не включена. Чтобы получить точную ABC, это должен быть myobject [0: 3]. Он получит индекс 0–1–2, следовательно, «A», «B», «C». Итак, буквально WTF ?!

В R myobject [-1] возвращает все элементы, кроме первого; «B», «C», «D», «E». В Python он возвращает последний элемент «E». Итак, myobject [1] возвращает второй элемент, а myobject [-1] возвращает первый элемент с конца? Это многовато.

Я даже не буду говорить об использовании отступов и скобок. На мой взгляд, скобки полезны и полезны. Python заставляет вас использовать отступы, но это не имеет большого значения.

Аналогичным образом R не имеет «методов» (например, object.method ()), только функции. Да, вы можете определить функцию в объекте R (object $ method ()), но кто это делает? Тебе не нужно.

3. Пакеты

В R. Вы можете делать буквально тысячи вещей. Для начала просто проверьте Просмотр задач. Это не ограничивается просмотром задач. CRAN (App Store of R) сейчас имеет более 10.000 пакетов.

Что бы вы ни делали или что бы вам ни нужно было кодировать, для этого, вероятно, есть пакет R. Существует множество статистических моделей и других инструментов для различных нужд.

Большинство последних достижений в литературе представлено в виде пакетов R. Потому что установка и загрузка пакетов в R - не проблема. Кроме того, вы можете загружать свои пакеты на GitHub.

CRAN - репозиторий высокого качества, поэтому загрузка пакетов в него может быть болезненной. Итак, многие разработчики R сначала размещают свои пакеты на GitHub, а затем отправляют их в CRAN.

Чтобы установить пакет, просто напишите один раз install.packages («packagename») (он загрузит пакет и его зависимости) и напишите library (packagename), чтобы начать с ним работать.

4. Документация и сообщество

Возможно, у R не самое большое сообщество, но оно определенно одно из лучших. Почти с каждой проблемой, с которой вы сталкиваетесь с R, вы можете найти кого-то с той же проблемой на StackExchange или подобных платформах. Если нет, то людей более чем достаточно, чтобы помочь вам.

Документация тоже потрясающая. Если вы не помните, как использовалась функция, просто поставьте? перед названием функции на консоли (например, ? functionname). Откроется файл справки с информацией о процессе, параметрах и результатах. В конце есть также раздел примеров (для большинства из них), где вы можете увидеть, как работает код в реальном времени, и воспроизвести результаты.

5. Структуры данных

Структуры данных в R довольно легко понять и помнить об их свойствах. Они также довольно хорошо ладят друг с другом. Конечно, векторные вычисления поначалу могут быть немного сложными, но R позволяет вам пропустить вычисления с векторным мышлением (хотя и за счет скорости).

6. tidyverse (особенно dplyr & ggplot2)

На мой взгляд, пакет tidyverse - лучшее место для R. Это фактически метапакет, который состоит из нескольких пакетов, таких как haven, forcats, stringr, tidyr, readr, dplyr и ggplot2. Каждый из них имеет отличную функциональность, но на первый взгляд два пакета очень важны. dplyr предназначен для обработки данных, а ggplot2 - для построения графиков. Они довольно элегантны, невероятно просты для понимания и обладают большими возможностями, которые можно расширить с помощью определенных навыков или расширений.

7. Функции сообщения о болезни

Представьте, что у вас есть волшебная палочка, которая превращает код в полнофункциональные документы, отчеты и даже книги. В языке R у этой палочки есть несколько имен; rmarkdown, вязальщица / гладь и bookdown. Эти пакеты с помощью pandoc, вы можете превратить код R в вывод (pdf, docx, html, как хотите).

8. R как инструмент интерфейса

Должен признать, R здесь все еще находится в зачаточном состоянии. Но у него есть пакет, который выполняет свою работу, по крайней мере, для целей прототипирования: Shiny. Он просто превращает ваш код в интерактивную веб-страницу.

9. Слабые стороны

Даже слабые стороны R не могут быть причиной не использовать.

  • R не очень подходит для проектов с большими данными, потому что он работает в памяти. Итак, такие вещи, как запись и чтение с жесткого диска, требуют доработки. Это нормально, потому что в большинстве случаев предоставленной памяти будет достаточно. Если нет, то всегда есть возможность настроить VPS и получить достаточно ресурсов.
  • Base R не поддерживает параллельное программирование. Пакеты, которые есть, ограничены. Это нормально, потому что параллельное программирование требует особого «стиля». Поскольку я рекомендую R людям, не имеющим отношения к CS, они обычно не заботятся о таких вещах.
  • У R странный синтаксис. Это на самом деле неправда. Это может показаться странным для CS. Когда я говорю специалистам по CS, что индекс начинается с 1, а не с 0, они съеживаются. Хотя принято считать, что первый элемент называется 1.

10. Заключительные слова

Начните использовать R. Начните отсюда.