Вы собираетесь начать проект на R? Перед просмотром любого учебника прочтите эти основные стандарты.

Прочтите оригинальную статью в блоге Sicara здесь.

Я потратил последние 8 недель на R и должен признать, что после многих месяцев работы на Python и JavaScript, я почти был сбит с толку методами работы R.

Как консультант я работаю над разными проектами в команде. Мой последний побудил нас разработать индивидуальное решение R в стиле проекта парсинга Python. К сожалению, клиентская среда заставила нас использовать R. Привыкли ли вы разрабатывать в современной среде IDE? Вы знакомы с основными принципами программирования? Тогда прочтите следующее!

Настроить RStudio

Вам следует начать с создания наилучшей среды программирования, чтобы часы, которые вы потратите в ближайшем будущем, были более комфортными. Последнее, что вы хотите сделать, - это часами заниматься такой тривиальной «ошибкой», как:

Итак, начнем с настройки RStudio:

  • Выберите шрифт, который вас не обманет (Глобальные параметры ›Внешний вид)
  • Выберите тему, которая соответствует вашим глазам и вкусу (Общие параметры ›Внешний вид)

Более того, если вы хотите правильно использовать git:

  • Удалять завершающие пробелы при сохранении (Глобальные параметры ›Код› Сохранение)
  • Убедитесь, что ваши файлы заканчиваются новой строкой (Глобальные параметры ›Код› Сохранение)
  • Кодируйте файлы в кодировке UTF-8 (Глобальные параметры ›Код› Сохранение). Обратите внимание, что эта команда может изменить открытие файлов с различной кодировкой.

Стандарты именования

Только в R я смог увидеть столько соглашений об именах, как это:

Вам следует выбрать одно соглашение об именах и соблюдать его на протяжении всего проекта. Действительно, исправить это с помощью нескольких курсоров впоследствии не получится в 90% случаев. Не поддавайтесь влиянию неравенства Р.

Не уверены в правилах именования? Ознакомьтесь с этой статьей.

Юнит-тесты

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

Если вы не разбираетесь в модульном тестировании или не видите в этом смысла, дайте 5 минут этой теме на StackOverflow.

Скрытое поведение

За вашим кодом на R происходит много вещей, и некоторые из них непростые. Вот несколько примеров поведения, которые мы обнаружили за 8 недель.

Проверка, является ли переменная NA

Одной из наших обычных проблем была проверка, является ли переменная NA. Есть много способов сделать это:

  • variable == NA: оператор двойного равенства проверяет, равно ли значение вашей переменной NA. Эта операция не имеет смысла в R (если вам нужны подробности, вы можете обратиться к этой теме StackOverflow) и не будет работать.
  • is.na (переменная): эта функция оптимизирована для таблиц. Он выполняется поэлементно и, таким образом, создает маску, подходящую для вашей переменной.
  • идентичный (переменная, NA): эта функция надежно проверяет, является ли переменная атомарным вектором с одним значением NA. Тем не менее, он не будет работать с другими типами NA в R.

Действительно, R содержит разные типы NA. Но R также позволяет функциям возвращать пользовательские NA, например, в пакете rvest.

Если у вас возникают проблемы со значениями NA, вам следует использовать anyNA (переменная).

Неожиданное автозаполнение

R имеет тенденцию автоматически заполнять несколько ключевых элементов:

  • аргументы функций (которые также являются аргументами ключевых слов):

  • имена столбцов при работе с фреймами данных:

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

РЕДАКТИРОВАТЬ: вы можете сделать так, чтобы RStudio отображал предупреждения, когда происходит такое автозаполнение, редактируя свой .Rprofile:

R - функциональный язык программирования

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

Полную статью в блоге Sicara читайте здесь.