Jakie są skuteczne sposoby organizacji kodu R i danych wyjściowych? [Zamknięte]

23

Szukam informacji na temat sposobu, w jaki inni organizują swój kod R i dane wyjściowe.

Moja obecna praktyka polega na pisaniu kodu w blokach w pliku tekstowym jako takim:

#=================================================
# 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"]))
#==================================================

Następnie wklejam dane wyjściowe do innego pliku tekstowego, zwykle z pewnymi adnotacjami.

Problemy z tą metodą to:

  1. Kod i dane wyjściowe nie są jawnie powiązane inaczej niż według daty.
  2. Kod i dane wyjściowe są uporządkowane chronologicznie, dlatego ich wyszukiwanie może być trudne.

Zastanawiałem się nad stworzeniem jednego dokumentu Sweave ze wszystkim, ponieważ mógłbym wtedy stworzyć spis treści, ale wydaje się, że może to być bardziej kłopotliwe niż korzyści, jakie by to zapewniło.

Daj mi znać o wszelkich skutecznych procedurach dotyczących organizacji kodu R i danych wyjściowych, które pozwoliłyby na wydajne wyszukiwanie i edycję analizy.

DQdlM
źródło
2
Tylko, aby uniknąć kopiowania / wklejania, sink()lub capture.output()mogą być Twoimi przyjaciółmi. Warto wziąć pod uwagę narzędzia do raportowania, takie jak Hmisc , Sweave lub napar (twój punkt 1). Systemy kontroli wersji ( rcs , svn lub git ) mogą pomóc w punkcie 2.
chl
@chl - dzięki za sugestie. Nie byłem świadomy sink()i capture.output(). To wspaniale.
DQdlM,
1
dzisiaj jest także knitr!
kjetil b halvorsen

Odpowiedzi:

22

Nie jesteś pierwszą osobą, która zadaje to pytanie.

Bernd Weiss
źródło
+1 i pierwszy link, który podajesz, zawiera w sobie wątek :-)
chl
@chl Thanks! Zastanawiałem się, czy to pytanie jest duplikatem i powinno zostać zamknięte ...
Bernd Weiss
To jest, IMO. Ale ponieważ nie ma głosów do zamknięcia, niechętnie go zamykam. Również starszy był bardziej ogólny, ale w przeszłości bardzo podobne pytanie zostało zamknięte. Poczekajmy i zobaczmy, jak to będzie.
chl
dzięki za listę! To jest bardzo przydatne. Doszedłem do wniosku, że nie jestem pierwszym, który zadał to pytanie, ale nie wydawało mi się, że znalazłem wiele podczas moich (oczywiście nieudolnych) poszukiwań.
DQdlM,
6

Dla jednego organizuję wszystko w 4 pliki dla każdego projektu lub analizy. (1) „kod” Gdzie przechowuję pliki tekstowe funkcji R. (2) „sql” Gdzie przechowuję zapytania użyte do zebrania moich danych. (3) „dat” Gdzie przechowuję kopie (zazwyczaj csv) moich nieprzetworzonych i przetworzonych danych. (4) „rpt” Gdzie przechowuję raporty, które rozpowszechniłem.

WSZYSTKIE moje pliki są nazywane przy użyciu bardzo szczegółowych nazw, takich jak „analiza_ sieci_abc_for_research_on_modified_buffer_19 maja2011”

Piszę również szczegółową dokumentację z góry, w której organizuję hipotezę, wszelkie założenia, kryteria włączenia i wyłączenia oraz kroki, które zamierzam podjąć, aby osiągnąć swój cel. Wszystko to jest nieocenione dla powtarzalnych badań i ułatwia mój roczny proces wyznaczania celów.

Wola
źródło
2

Teraz, kiedy zmieniłem na Sweave, nigdy nie chcę wracać. Zwłaszcza jeśli masz wykresy jako dane wyjściowe, o wiele łatwiej jest śledzić kod użyty do utworzenia każdego wykresu. Ułatwia także poprawianie jednej drobnej rzeczy na początku i powoduje, że faluje ona na wyjściu bez konieczności ręcznego ponownego uruchamiania.

Aaron - Przywróć Monikę
źródło
1
Sweave jest cudowny. Trzeba się przyzwyczaić, ale jeśli znasz już TeX i R, to oczywisty wybór. Pozwala także nigdy więcej nie tracić czasu na wyrównanie kolumn tabeli, co jest miłe.
richiemorrisroe
dzięki za wkład. Moje 2 obawy związane ze Sweave to: 1) Skończy się z plikami bazillionów w moim katalogu - szczególnie z dużą liczbą cyfr, i 2) Będę musiał bardzo uważać na kod, aby zapobiec czkawkom za każdym razem, gdy kompiluję cały dokument (np. myślę, że coś jest załadowane, a nie jest). Czy masz te problemy?
DQdlM,
1) Możesz usunąć pliki pośrednie, jeśli chcesz; Używam skryptu Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ), który robi to automatycznie; chociaż można go łatwo wyłączyć. Jeśli to zrobisz, upewnij się, że wiesz, co zostanie usunięte przed użyciem, aby zapobiec możliwej katastrofie. Krótka wersja jest taka, że ​​jeśli żadne pliki nie współużytkują nazwy basenowej pliku Rnw, wszystko jest w porządku.
Aaron - Przywróć Monikę
2) Moim zdaniem należy zachować ostrożność w ten sposób, co jest dobrą rzeczą, i czasami kompiluję mój dokument Sweave z myślą o tym właśnie celu, to znaczy, aby upewnić się, że odpowiednio śledziłem wszystko, co potrzebne do odtworzenia analiza.
Aaron - Przywróć Monikę
1
@ naught101: W przypadku długich analiz uruchamiam go osobno i zapisuję wyniki, zwykle w .RDatapliku, do wprowadzenia przez dokument Sweave. Istnieje jednak kilka świetnych opcji „buforowania” wyników z fragmentu kodu, aby nie został ponownie uruchomiony.
Aaron - Przywróć Monikę
2

Do konstruowania pojedynczych plików kodu .R można również użyć strcode , dodatku RStudio, który utworzyłem, aby wstawiać separatory kodu (z opcjonalnymi tytułami) i na ich podstawie - uzyskiwać streszczenia plików kodu. Wyjaśniam jego użycie bardziej szczegółowo w tym poście na blogu .

Lorenz Walthert
źródło