Подтвердить что ты не робот

Какие наилучшие методы вы используете для программирования в R?

Каковы некоторые хорошие методы программирования в R?

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

Но какие советы для написания чистого и эффективного кода R?

4b9b3361

Ответ 1

Вы уже указали некоторые подсказки, указав, что ваш подход - "взломать быстрые сценарии". Если вам нужны лучшие практики и структура, просто следуйте установленным лучшим практикам из CRAN:

  • создайте пакет, это откроет дверь для запуска R CMD check, которая очень полезна.
  • как заявили многие люди, наличие пакета помогает вам на этапе написания кода, так как вы несколько вынуждены документировать код; это хорошая вещь (TM)
  • После того, как у вас есть пакет, добавьте код в раздел \examples{} документации, так как он будет работать во время R CMD check и обеспечивает легкую запись в регрессионное тестирование
  • Как только вы привыкнете к регрессионному тестированию, начните использовать пакет, например RUnit; это действительно лучшие практики.
  • Указатель JD на Руководство по стилю Google является хорошим. Это не единственное руководство по стилю, например. Конвенция о кодировании Henrik R предшествует ей на несколько лет; и есть Хэдли рифф в руководстве по стилю Google
  • В противном случае, oldie-but-goldie "делает то, что делают ваши коллеги и соавторы", также применяется

Ответ 3

Я полностью согласен с существующими ответами, особенно в отношении использования пакетов. Пакеты требуют много дисциплины, документации и структуры, которые действительно помогают применять лучшие практики (наряду с R CMD CHECK). Вы также можете использовать пакет codetools, чтобы помочь с этим. Используйте пакет roxygen для документации.

Кроме того, я рекомендую вам не только векторизовать свой код, но, в частности, делать все возможное для векторизации ваших функций, что означает, что вы должны иметь возможность предоставлять векторные аргументы и возвращать векторы (даже из таких вещей, как вызовы базы данных), Это действительно улучшит эффективность кода и четкость в долгосрочной перспективе.

Наконец, мне очень нравится использовать что-то вроде Sweave для упорядочивания моего кода в ясное грамотное воспроизводимое исследование при написании отчета. Наряду с этим я рекомендую использовать пакет кеша.

Ответ 4

Для эффективности предпочитайте векторные операции над циклами for.

Ответ 5

Это хорошая практика программирования в целом, но используйте систему управления версиями, такую ​​как SVN, управляйте своим кодом.