Какие наилучшие методы вы используете для программирования в R?
Каковы некоторые хорошие методы программирования в R
?
Так как R
- это язык специального назначения, который я не использую все время, я обычно просто взламываю несколько быстрых скриптов, которые делают то, что мне нужно.
Но какие советы для написания чистого и эффективного кода R
?
Ответы
Ответ 1
Вы уже указали некоторые подсказки, указав, что ваш подход - "взломать быстрые сценарии". Если вам нужны лучшие практики и структура, просто следуйте установленным лучшим практикам из CRAN:
- создайте пакет, это откроет дверь для запуска
R CMD check
, которая очень полезна.
- как заявили многие люди, наличие пакета помогает вам на этапе написания кода, так как вы несколько вынуждены документировать код; это хорошая вещь (TM)
- После того, как у вас есть пакет, добавьте код в раздел
\examples{}
документации, так как он будет работать во время R CMD check
и обеспечивает легкую запись в регрессионное тестирование
- Как только вы привыкнете к регрессионному тестированию, начните использовать пакет, например RUnit; это действительно лучшие практики.
- Указатель JD на Руководство по стилю Google является хорошим. Это не единственное руководство по стилю, например. Конвенция о кодировании Henrik R предшествует ей на несколько лет; и есть Хэдли рифф в руководстве по стилю Google
- В противном случае, oldie-but-goldie "делает то, что делают ваши коллеги и соавторы", также применяется
Ответ 2
Я рекомендую Josh Reich Load, Clean, Func, Do workflow из этого предыдущего вопроса.
Кроме того, я рекомендую следующие рекомендации по кодированию, такие как Руководство по стилю Google R. Использование руководства по стилю кодирования делает чтение кода намного проще.
Ответ 3
Я полностью согласен с существующими ответами, особенно в отношении использования пакетов. Пакеты требуют много дисциплины, документации и структуры, которые действительно помогают применять лучшие практики (наряду с R CMD CHECK). Вы также можете использовать пакет codetools, чтобы помочь с этим. Используйте пакет roxygen для документации.
Кроме того, я рекомендую вам не только векторизовать свой код, но, в частности, делать все возможное для векторизации ваших функций, что означает, что вы должны иметь возможность предоставлять векторные аргументы и возвращать векторы (даже из таких вещей, как вызовы базы данных), Это действительно улучшит эффективность кода и четкость в долгосрочной перспективе.
Наконец, мне очень нравится использовать что-то вроде Sweave для упорядочивания моего кода в ясное грамотное воспроизводимое исследование при написании отчета. Наряду с этим я рекомендую использовать пакет кеша.
Ответ 4
Для эффективности предпочитайте векторные операции над циклами for
.
Ответ 5
Это хорошая практика программирования в целом, но используйте систему управления версиями, такую как SVN, управляйте своим кодом.