Каковы эффективные способы организации R кода и вывода? [закрыто]

23

Я ищу информацию о том, как другие организуют свой код R и вывод.

Моя текущая практика заключается в написании кода в блоках в текстовом файле как таковой:

#=================================================
# 19 May 2011
date()
# Correlation analysis of variables in sed summary
load("/media/working/working_files/R_working/sed_OM_survey.RData")
# correlation between estimated surface and mean perc.OM in epi samples
cor.test(survey$mean.perc.OM[survey$Depth == "epi"], 
    survey$est.surf.OM[survey$Depth   == "epi"]))
#==================================================

Затем я вставляю вывод в другой текстовый файл, обычно с некоторой аннотацией.

Проблемы с этим методом:

  1. Код и выходные данные явно не связаны, кроме как по дате.
  2. Код и выходные данные организованы в хронологическом порядке и, следовательно, может быть трудно найти.

Я подумал о том, чтобы сделать один документ Sweave со всем, так как тогда я мог составить оглавление, но, похоже, это может доставить больше хлопот, чем пользы, которую он обеспечит.

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

DQdlM
источник
2
Просто чтобы избежать копирования / вставки, sink()или, capture.output()возможно, ваши друзья. Утилиты для создания отчетов, такие как Hmisc , Sweave или brew , заслуживают рассмотрения (ваша точка 1). Системы контроля версий ( rcs , svn или git ) могут помочь с пунктом 2.
chl
@chl - спасибо за предложения. Я не знал sink()и capture.output(). Замечательно.
DQdlM
1
сегодня тоже книтр!
kjetil b halvorsen

Ответы:

22

Вы не первый, кто задает этот вопрос.

Бернд Вайс
источник
+1 и первая ссылка, которую вы предоставляете, ссылается на нить в ней :-)
chl
@chl Спасибо! Мне было интересно, если этот вопрос дубликат и должен быть закрыт ...
Бернд Вайс
Это ИМО. Но поскольку голосов нет, чтобы закрыть, я не хочу закрывать его. Кроме того, старый был более общим, но очень похожий вопрос был закрыт в прошлом. Давайте подождем и посмотрим, как все пойдет.
ЧЛ
спасибо за список! Это очень полезно. Я подумал, что не первый, у кого возник этот вопрос, но я, кажется, не нашел много в моем (очевидно неумелом) начальном поиске.
DQdlM
6

Я, например, организовать все в 4 файла для каждого проекта или анализа. (1) «код», где я храню текстовые файлы функций R. (2) 'sql' Где я храню запросы, используемые для сбора моих данных. (3) «dat», где я храню копии (обычно csv) моих необработанных и обработанных данных. (4) 'rpt' Где я храню распространенные мной отчеты.

ВСЕ мои файлы названы с использованием очень подробных имен, таких как 'analysis_of_network_abc_for_research_on_modified_buffer_19May2011'

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

Будет
источник
2

Теперь, когда я переключился на Sweave, я больше не хочу возвращаться. Особенно, если у вас есть графики в качестве выходных данных, гораздо проще отслеживать код, используемый для создания каждого графика. Это также значительно облегчает исправление одной незначительной вещи в начале и позволяет ей смещаться по выходу без необходимости повторного запуска чего-либо вручную.

Аарон - Восстановить Монику
источник
1
Sweave это замечательно. Требуется некоторое привыкание, но если вы уже знаете TeX и R, это очевидный выбор. Это также позволяет вам никогда не тратить время на выравнивание столбцов таблицы, что приятно.
richiemorrisroe
спасибо за вклад. Мои 2 проблемы со Sweave: 1) в моем каталоге появятся файлы bazillion - особенно с большим количеством цифр, и 2) мне придется быть очень осторожным с кодом, чтобы избежать икоты каждый раз, когда я компилирую весь документ (например, я думаю, что-то загружено, а его нет). У вас есть эти проблемы?
DQdlM
1) Вы можете удалить промежуточные файлы, если хотите; Я использую скрипт Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ), который делает это автоматически; хотя можно легко отключить. Если вы сделаете это, убедитесь, что вы знаете, что он удалит, прежде чем использовать его, чтобы предотвратить возможную катастрофу. Короче говоря, если нет файлов с общим именем вашего файла Rnw, то все в порядке.
Аарон - Восстановить Монику
2) По моему мнению, быть осторожным в этом отношении - это хорошо, и иногда я собираю свой документ Sweave с точной целью, то есть для того, чтобы убедиться, что я правильно отследил все, что нужно для воссоздания анализ.
Аарон - Восстановить Монику
1
@ naught101: для длительного анализа я запускаю его отдельно и сохраняю результаты, обычно в .RDataфайле, для ввода в документ Sweave. Тем не менее, есть также несколько отличных опций для «кэширования» результатов из фрагмента кода, чтобы он не запускался повторно.
Аарон - Восстановить Монику
2

Для структурирования отдельных файлов кода .R вы также можете использовать strcode , надстройку RStudio, которую я создал для вставки разделителей кода (с необязательными заголовками) и на их основе - получения сводных данных файлов кода. Я объясню использование этого более подробно в этом сообщении в блоге .

Лоренц Вальтерт
источник