Вы собираетесь начать проект на 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 читайте здесь.