Примеры кода R / лучшие практики - PullRequest
9 голосов
/ 15 декабря 2009

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

  1. Какие примеры хорошо написанных / задокументированных классов S3?
  2. Как насчет соответствующих классов S4?
  3. Какие условные обозначения вы используете при комментировании классов / функций .R? Вы помещаете все свои комментарии в файлы .Rd и .R? Синхронизация этих файлов утомительна?

Ответы [ 4 ]

7 голосов
/ 15 декабря 2009

Использовать ли S3, S4 или пакет вообще - это в основном вопрос стиля (как говорит Дирк), но я бы предложил использовать один из них, если вы хотите иметь очень хорошо структурированный объект (так же, как в любой ООП язык). Например, все классы временных рядов имеют объекты временных рядов (я полагаю, что все они являются S3, за исключением его ), потому что это позволяет им навязывать определенное поведение при создании и использовании этих объектов. Аналогично вопросу о создании пакета: это хорошая идея, если вы будете часто повторно использовать свой код или если код будет полезен кому-то еще. Это требует немного больше усилий, но дополнительная организационная структура может легко компенсировать затраты.

Что касается S3 и S4 (обсуждается в R-Help здесь и здесь ), основное правило состоит в том, что классы S3 более "быстрые и грязные" в то время как классы S4 предоставляют больше жесткий контроль над объектами и типами . Если вы работаете с Bioconductor, вы обычно будете использовать S4 (см., Например, «Классы и методы S4» ).

Я бы порекомендовал прочесть кое-что из следующего:

  1. «Краткое (не очень) введение в S4» Кристофа Дженолини
  2. "Ниша программистов: простой класс на S3 и S4" Томаса Ламли
  3. "Brobdingnag: пакет" Hello World "с использованием методов S4" Робина К. С. Ханкина
  4. «Преобразование пакетов в S4» Дугласа Бейтса
  5. "Как работают методы S4" Джона Чемберса

Что касается документации, Хэдли предлагает следующее: Roxygen облегчит жизнь и поместит документацию рядом с кодом. Помимо этого, вы все равно можете предоставить другие комментарии в своем коде помимо того, что требуют файлы Roxygen или man, в этом случае хорошей практикой будет комментировать ваш код для других разработчиков. Эти комментарии не окажутся в вашем пакете; они будут видны только в исходном коде.

5 голосов
/ 15 декабря 2009

Для 3. Используйте roxygen - он работает как javadoc, чтобы делать комментарии в ваших исходных файлах и создавать файлы Rd.

5 голосов
/ 15 декабря 2009

Это полдюжины или более вопросов, связанных в один, что затрудняет ответ.

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

Большая часть остального стиля. Некоторые известные R-коды клянутся S4, а другие клянутся об этом. Вы всегда можете прочитать пакеты других, а также код в самом R. И вы всегда можете по-разному реализовать свою оболочку RODBC и сравнить свои собственные подходы.

Редактировать: Отражая ваш обновленный и значительно сокращенный вопрос: выберите некоторые пакеты из CRAN, особенно среди тех, которые вы используете. Я думаю, что вы быстро найдете более или менее интересные в соответствии со своим стилем.

4 голосов
/ 15 декабря 2009

несколько больше связано со стилем, чем с веществом, но руководство по стилю Google R стоит прочитать:

...