Які ефективні способи впорядкувати 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-коду та виводу, які б дозволяли ефективно шукати та редагувати аналіз.


2
Тільки щоб уникнути копіювання / вставки sink()або capture.output()може бути вашими друзями. Звітні утиліти, такі як Hmisc , Sweave або самогон варто розглянути (ваш пункт 1). Системи версій ( rcs , svn або git ) можуть допомогти у пункті 2.
chl

@chl - дякую за пропозиції. Я не знав sink()і capture.output(). Це чудово.
DQdlM

1
сьогодні також є в'язальниця!
kjetil b halvorsen

Відповіді:


22

Ви не перша людина, яка задала це питання.


+1, і перше посилання ви надаєте посилання на тему :-)
chl

@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
Плетіння чудове. До цього потрібно звикнути, але якщо ви вже знаєте TeX і R, це очевидний вибір. Це також дозволяє ніколи більше не витрачати час на вирівнювання стовпців таблиці, що приємно.
richiemorrisroe

дякую за вклад. Мої 2 проблеми щодо Sweave - це 1) я закінчую базільйоном файлів у моєму каталозі, особливо з великою кількістю цифр, і 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, створену для вставки роздільників коду (з додатковими заголовками) та на їх основі - отримання резюме файлів коду. Я пояснюю його використання більш докладно в цій публікації блогу .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.