Вопрос

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

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

Решение

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

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

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top