R i kontrola wersji dla solowego analityka danych

Wielu analityków danych, których szanuję, używa kontroli wersji. Na przykład:

Oceniam jednak, czy przyjęcie systemu kontroli wersji takiego jak git byłoby warte zachodu.

krótki przegląd: Jestem socjologiem, który używa R do analizy danych do publikacji naukowych. Obecnie nie produkuj Pakiety R. Mój kod R dla projektu zazwyczaj zawiera kilka tysięcy linii kodu do wprowadzania danych, czyszczenia, manipulacji, analiz i generowania danych wyjściowych. Publikacje są zazwyczaj pisane przy użyciu LaTeX.

W odniesieniu do kontroli wersji jest wiele korzyści, o których czytałem, ale wydają się być mniej istotne dla solowego analityka danych.

  • Backup: Mam już zapasowy system.
  • Rozwidlanie i przewijanie: mam nigdy nie czułem potrzeby, aby to zrobić, ale widzę, jak to może być przydatne (np. przygotowujesz wiele artykuły w czasopismach oparte na tym samym zbiorze danych; przygotowujesz raport to jest aktualizowane co miesiąc, itp)
  • Współpraca: przez większość czasu jestem analizując dane osobiście, tak więc I nie chce współpracować korzyści z kontroli wersji.

Istnieje również kilka potencjalnych kosztów związanych z przyjęciem kontroli wersji:

  • Czas na ocenę i poznaj system kontroli wersji
  • możliwy wzrost złożoności w stosunku do mojego obecnego systemu zarządzania plikami

Jednak nadal mam wrażenie, że coś mi umyka. Ogólne wskazówki dotyczące kontroli wersji wydają się być bardziej skierowane do informatyków niż analityków danych.

A więc konkretnie w odniesieniu do analityków danych w okolicznościach podobnych do wymienionych powyżej:

  1. Czy kontrola wersji jest warta wysiłku?
  2. Jakie są główne plusy i minusy przyjęcia kontroli wersji?
  3. Jaka jest dobra strategia na rozpoczęcie pracy z kontrolą wersji do analizy danych za pomocą R (np. przykłady, pomysły na przepływ pracy, oprogramowanie, linki do przewodników)?
Author: Jeromy Anglim, 2010-04-26

13 answers

Uważam, że odpowiedź na twoje pytanie jest zdecydowanym Tak - Korzyści z zarządzania plikami za pomocą systemu kontroli wersji znacznie przewyższają koszty wdrożenia takiego systemu.

Postaram się odpowiedzieć szczegółowo na niektóre z poruszonych przez Ciebie kwestii:

  • Backup: Mam już zapasowy system.

Tak, I ja też. jednakże, są pewne pytania do rozważenia dotyczące zasadności polegania na ogólnym cel system kopii zapasowych, aby odpowiednio śledzić ważne i aktywne pliki związane z pracą. Po stronie wykonania:

  • w jakim odstępie czasu System backupu wykonuje migawki?
  • Jak długo trwa tworzenie migawki?
  • czy to musi obraz całego dysku twardego podczas robienia migawki, czy można łatwo powiedzieć, aby po prostu wykonać kopię zapasową dwóch plików, które właśnie otrzymały krytyczne aktualizacje?
  • Czy Twój system kopii zapasowych pokaże Ci, z dokładnością, co zmiana w plikach tekstowych z jednej kopii zapasowej na drugą?

I co najważniejsze:

  • w ilu miejscach są zapisywane kopie zapasowe? Czy są one w tej samej fizycznej lokalizacji, co komputer?
  • Jak łatwo jest przywrócić daną wersję pojedynczego pliku z systemu kopii zapasowej?

Na przykład, mieć komputer Mac i używać Time Machine do tworzenia kopii zapasowych na innym dysku twardym w moim komputerze. Time Machine jest świetny do odzyskiwania dziwnego pliku lub przywracania systemu jeśli coś pójdzie nie tak. Jednak po prostu nie ma tego, czego potrzeba, aby zaufać mojej ważnej pracy: {]}

  • Podczas tworzenia kopii zapasowej Time Machine musi obrazować cały dysk twardy, co zajmuje znaczną ilość czasu. Jeśli nadal będę pracować, nie ma gwarancji, że mój plik zostanie przechwycony w stanie, który był w momencie inicjowania kopii zapasowej. Mogę również osiągnąć inny punkt, który chciałbym zapisać, zanim skończy się pierwsza kopia zapasowa.

  • Dysk twardy do które Moje kopie zapasowe Time Machine są zapisywane znajduje się w mojej maszynie-to sprawia, że moje dane są podatne na kradzież, pożar i inne katastrofy.

Z systemem kontroli wersji, takim jak Git, mogę rozpocząć tworzenie kopii zapasowych określonych plików bez większego wysiłku, który wymaga zapisu w edytorze tekstu - a plik jest obrazowany i przechowywany natychmiast. Co więcej, Git jest rozprowadzany tak, że każdy komputer, na którym pracuję ma pełną kopię repozytorium.

To oznacza, że moja praca odbicie lustrzane na czterech różnych komputerach - nic poza działaniem Boga nie może zniszczyć moich plików i danych, w którym to momencie prawdopodobnie i tak nie przejmowałbym się zbytnio.

  • Rozwidlanie i przewijanie: nigdy nie czułem potrzeby tego robić, ale widzę, jak może to być przydatne (np. przygotowujesz wiele artykułów w czasopismach na podstawie tego samego zbioru danych; przygotowujesz raport, który jest aktualizowany co miesiąc, itp.) {]}

Jako solistka, Nie wiem, czy i to bardzo. Jednak czas, który zaoszczędziłem, mając możliwość przewijania, w pojedynkę spłacił moją inwestycję w naukę systemu kontroli wersji wiele, wiele razy. Mówisz, że nigdy nie czułeś potrzeby tego robić - ale czy przewijanie dowolnego pliku pod bieżącym systemem kopii zapasowych było naprawdę bezbolesną, wykonalną opcją?

Czasami raport wyglądał lepiej 45 minut, godzinę lub dwa dni temu.
  • Współpraca: przez większość czasu jestem analizując dane osobiście, tak więc I nie chce współpracować korzyści z kontroli wersji.

Tak, ale nauczyłbyś się narzędzia, które może okazać się niezbędne, jeśli skończysz współpracując z innymi przy projekcie.

  • Czas na ocenę i nauczenie się systemu kontroli wersji
Nie przejmuj się tym zbytnio. Systemy kontroli wersji są jak języki programowania-mają kilka kluczowych pojęć, których należy się nauczyć a reszta to tylko cukier składniowy. Zasadniczo, pierwszy system kontroli wersji, którego się nauczysz, będzie wymagał zainwestowania najwięcej czasu - przejście na inny wymaga tylko nauczenia się, jak nowy system wyraża kluczowe pojęcia.

Wybierz popularny system i idź do niego!

  • możliwy wzrost złożoności w stosunku do mojego obecnego systemu zarządzania plikami

Czy masz jeden folder, powiedzmy Projects, który zawiera wszystkie foldery i pliki związane z Twoimi danymi analizy? Jeśli tak, to naciśnięcie kontroli wersji zwiększy złożoność Twojego systemu plików dokładnie o 0. Jeśli twoje projekty są rozrzucone wokół twojego komputera - powinieneś scentralizować je przed zastosowaniem kontroli wersji, a to skończy się zmniejszając złożoność zarządzania plikami - dlatego w końcu mamy folder Documents.

  1. Czy kontrola wersji jest warta wysiłku?
Tak! To daje Ci ogromny przycisk Cofnij i pozwala łatwo przenosić pracę z maszyny na maszynę bez martwienia się o rzeczy takie jak utrata dysku USB.

2 Jakie są główne plusy i minusy przyjęcia kontroli wersji?

Jedynym przekrętem, jaki przychodzi mi do głowy, jest niewielki wzrost rozmiaru pliku - ale nowoczesne systemy kontroli wersji potrafią robić absolutnie niesamowite rzeczy z kompresją i selektywnym zapisywaniem, więc jest to kwestia sporna.

3 Co to jest dobra strategia dla pierwsze kroki z kontrolą wersji do analizy danych za pomocą R (np. przykłady, pomysły na przepływ pracy, oprogramowanie, linki do przewodników)?

Przechowuj pliki generujące dane lub raporty pod kontrolą wersji, bądź selektywny. Jeśli używasz czegoś takiego jak Sweave, Przechowuj swoje pliki .Rnw, a nie Pliki .tex, które są z nich wytwarzane. Przechowuj surowe dane, jeśli ponowne pozyskanie byłoby uciążliwe. Jeśli to możliwe, napisz i zapisz skrypt, który pozyskuje Twoje dane i inny, który czyści lub modyfikuje je raczej niż przechowywanie zmian w surowych danych.

Jeśli chodzi o naukę systemu kontroli wersji, Gorąco polecam Gita i ten poradnik do niego.

Te strony mają również kilka fajnych wskazówek i trików związanych z wykonywaniem konkretnych działań z Git:

 80
Author: Sharpie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-16 00:29:17

Pracowałem przez dziewięć lat w sklepie analitycznym i wprowadziłem do niego ideę kontroli wersji naszych projektów analitycznych. Wierzę w kontrolę wersji, oczywiście. Chciałbym jednak poruszyć następujące kwestie.

  1. Kontrola wersji może nie być odpowiednia, jeśli przeprowadzasz analizę do ewentualnego wykorzystania w sądzie. Nie brzmi to tak, jak ty, ale nasi klienci byliby bardzo zdenerwowani, wiedząc, że każda wersja każdego skryptu, którą kiedykolwiek mieliśmy wyprodukowany był potencjalnie możliwy do odkrycia. Użyliśmy kontroli wersji dla modułów kodu, które zostały ponownie użyte w wielu konfiguracjach, ale z tego powodu nie użyliśmy kontroli wersji dla kodu specyficznego dla zaangażowania.
  2. odkryliśmy, że największą korzyścią dla kontroli wersji było przechowywanie modułów kodu w puszkach, które zostały ponownie wykorzystane w wielu projektach. Na przykład możesz mieć szczególny ulubiony sposób przetwarzania niektórych wyciągów z Pumeksów spisowych. Uporządkować ten kod w katalogu i umieścić go w Twoje VC. Następnie możesz sprawdzić go w każdym nowym projekcie za każdym razem, gdy go potrzebujesz. Może być nawet przydatne, aby utworzyć konkretne gałęzie określonego kodu dla określonego projektu, jeśli robisz specjalne przetwarzanie określonego wspólnego zbioru danych dla tego projektu. Następnie, kiedy skończysz z tym projektem, zdecyduj, ile kodu specjalnego chcesz scalić z powrotem do głównej gałęzi.
  3. nie umieszczaj przetworzonych danych w kontroli wersji. Tylko kod. Naszym celem było zawsze posiadanie kompletnego zestawu skryptów tak że możemy usunąć wszystkie nasze wewnętrznie przetwarzane dane, nacisnąć przycisk i kazdy numer raportu od nowa. To jedyny sposób, aby upewnić się, że nie masz starych błędów żyjących tajemniczo w swoich danych.
  4. aby upewnić się, że Twoje wyniki są naprawdę w pełni powtarzalne, nie wystarczy po prostu zachować swój kod w VCS. Bardzo ważne jest, aby uważnie śledzić, która wersja modułów została użyta do stworzenia konkretnego produktu.
  5. jako w przypadku oprogramowania miałem szczęście z Subversion. Jest łatwy w konfiguracji i administrowaniu. Doceniam atrakcyjność nowych rozproszonych VCSs, takich jak git i mercurial, ale nie jestem pewien, czy są jakieś silne zalety, jeśli pracujesz sam. Z drugiej strony, nie znam żadnych negatywów do ich używania,po prostu nie pracowałem z nimi w środowisku analitycznym.
 23
Author: Dan Menes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-10 23:13:02

Wykonuję badania ekonomiczne przy użyciu R i LaTeX, i zawsze umieszczam swoją pracę pod kontrolą wersji. To jak Nieograniczone cofanie. Spróbuj Bazaar, jest to jeden z najprostszych do nauki i użycia, a jeśli jesteś na Windows ma graficzny interfejs użytkownika (TortoiseBZR).

Tak, istnieją dodatkowe korzyści z kontroli wersji podczas pracy z innymi, ale nawet w projektach solowych ma to sens.

 17
Author: Ana Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 10:18:19

Ze względu na kompletność, pomyślałem, że dostarczę aktualizację na temat mojego przyjęcia kontroli wersji.

Uważam, że kontrola wersji dla projektów analizy danych solo jest bardzo przydatna.

Używam git jako głównego narzędzia do kontroli wersji. Pierwszy raz zacząłem używać Egit w Eclipse z StatET. Teraz generalnie używam tylko interfejsu wiersza poleceń, chociaż integracja z RStudio jest całkiem dobra.

Pisałem na blogu o moim doświadczeniu konfigurowanie wersji kontrola z perspektywy projektów analizy danych.

Jak wspomniano w poście, znalazłem przyjęcie kontroli wersji miało wiele drugorzędnych korzyści w tym, jak myślę o projektach analizy danych, w tym Wyjaśnienie:

  • rozróżnienie między plikami źródłowymi i pochodnymi
  • charakter zależności:
    • zależności pomiędzy elementami kodu
    • zależności pomiędzy Plikami w projekcie
    • i zależności z plikami i programami zewnętrzne do repozytorium
  • [[13]}charakter repozytorium i sposób podziału repozytoriów [13]}charakter zatwierdzania i dokumentowania zmian i kamieni milowych projektu
 17
Author: Jeromy Anglim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-20 05:36:06

W tej chwili prawdopodobnie myślisz o swojej pracy jako o rozwijaniu kodu, który zrobi to, co chcesz. Po wdrożeniu systemu kontroli wersji będziesz myśleć o swojej pracy jako o zapisywaniu swojego dziedzictwa w repozytorium i wprowadzaniu do niego błyskotliwych, stopniowych zmian. Czuję się o wiele lepiej.

 9
Author: Ken Williams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 15:19:24

Nadal polecam kontrolę wersji dla solowego występu jak ty, ponieważ posiadanie siatki bezpieczeństwa do łapania błędów może być świetną rzeczą.

Pracowałem jako samodzielny programista Javy i nadal korzystam z kontroli źródeł. Jeśli sprawdzam rzeczy w sposób ciągły, nie mogę stracić więcej niż godzinę pracy, jeśli coś pójdzie nie tak. Mogę eksperymentować i refaktorować bez martwienia się, bo jeśli pójdzie źle, zawsze mogę wrócić do mojej ostatniej działającej wersji.

If that ' s the case for you, Polecam użycie kontroli źródła. Nie jest trudno się tego nauczyć.

 7
Author: duffymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 09:54:39

Musisz użyć oprogramowania do kontroli wersji, w przeciwnym razie twoja analiza nie będzie idealnie powtarzalna.

Jeśli chcesz gdzieś opublikować swoje wyniki, zawsze powinieneś być w stanie odtworzyć status swoich skryptów w momencie, w którym je wyprodukowałeś. Powiedzmy, że jeden z recenzentów odkrywa błąd w jednym z Twoich skryptów: skąd miałbyś wiedzieć, które Wyniki są realizowane, a które nie?

W tym sensie System backupu nie jest wystarczający, ponieważ prawdopodobnie jest robione tylko raz dziennie i nie stosuje etykiet do różnych kopii zapasowych, więc nie wiesz, które wersje odpowiadają jakie wyniki. A nauka vcs jest prostsza niż myślisz, jeśli dowiesz się, jak dodać plik i jak zatwierdzić zmiany, to już wystarczy.

 7
Author: dalloliogm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 12:48:23

Czy kontrola wersji jest warta wysiłku?

Wielkie tak.

Jakie są główne plusy i minusy przyjęcia kontroli wersji?

Plusy: możesz śledzić, co robiłeś wcześniej. Szczególnie przydatne dla latex, ponieważ może być potrzebny Stary akapit, który został usunięty przez Ciebie! Gdy komputer ulega awarii lub pracujesz nad nowym, Twoje dane są z powrotem w locie.

Wady: musisz zrobić kilka ustawień.

Jaka jest dobra strategia dla pierwsze kroki z kontrolą wersji do analizy danych za pomocą R (np. przykłady, pomysły na przepływ pracy, oprogramowanie, linki do przewodników)?

Po prostu zacznij go używać. Używam tortoise SVN na windows jako narzędzie klienckie i mój dział ma serwer svn, umieszczam cały mój kod i dane (Tak, Ty również umieszczasz tam swoje dane!) tam.
 6
Author: Yin Zhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 17:09:38

Cofnij się trochę i poznaj zalety pisania pakietów R! Mówisz, że masz projekty z kilkoma tysiącami linii kodu, ale nie są one zorganizowane lub udokumentowane jak kod pakietu jest? Otrzymujesz duże wygrane dzięki dostosowaniu do ideałów pakietu, w tym dokumentacji dla każdej funkcji, testom na wiele typowych trudnych do wychwycenia błędów, możliwości pisania własnych pakietów testowych itp itp.

Jeśli nie masz dyscypliny, aby wyprodukować paczkę, to nie jestem pewien masz odpowiednią dyscyplinę, by właściwie kontrolować zmiany.

 6
Author: Spacedman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-16 08:21:31

Zgadzam się z powyższymi odczuciami i powiem, że tak, Kontrola wersji jest przydatna.

Zalety;

  • Zachowaj swoje badania zapisane, jak również kopie zapasowe, (tagowanie)
  • Pozwala wypróbować różne pomysły i wrócić, jeśli nie działają (rozgałęzianie) Możesz podzielić się swoją pracą z innymi ludźmi, a oni mogą podzielić się z Tobą swoimi zmianami (wiem, że tego nie określiłeś, ale to jest świetne)]}
  • większość systemów kontroli wersji ułatwia tworzenie skompresowany pakiet dla wszystkich plików pod kontrolą w pewnym momencie, na przykład w momencie przesyłania artykułu do publikacji, może to pomóc, gdy inni przeglądają Twoje artykuły. (możesz to zrobić ręcznie, ale po co tworzyć te procesy, skoro Kontrola wersji po prostu to robi)

Jeśli chodzi o Zestawy narzędzi, używam Git , wraz z StatEt i Eclipse który działa dobrze, chociaż na pewno nie musisz używać Eclipse. Istnieje kilka wtyczek Git do Eclipse , ale generalnie używam opcji wiersza poleceń.

 5
Author: PaulHurleyuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 20:14:51

Kontrola wersji do samodzielnego rozwoju (dowolnego rodzaju) jest naprawdę interesująca dla:

  • zbadanie historii i porównanie bieżącej pracy z przeszłymi commitami
  • rozgałęzianie i testowanie różnych wersji dla tego samego zestawu plików

Jeśli nie widzisz, że robisz jedną z tych dwóch podstawowych funkcji kontroli wersji, proste narzędzie do tworzenia kopii zapasowych może być wszystkim, czego potrzebujesz.
Jeśli potrzebujesz tych funkcji, otrzymasz również kopię zapasową (z git bundle na przykład)

 4
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:55

Wykonuję również samodzielne skrypty i uważam, że to sprawia, że rzeczy są prostsze, a nie bardziej złożone. Kopia zapasowa jest zintegrowana z procesem kodowania i nie wymaga oddzielnego zestawu procedur systemu plików. Czas potrzebny na nauczenie się podstaw każdego systemu kontroli wersji z pewnością byłby dobrze spędzonym czasem.

 4
Author: MW Frost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 12:35:03

Dropbox ma kontrolę wersji "ppor man 's", która zapewnia Ci część drogi tam za niewielki wysiłek i wiele dodatkowych korzyści.

 4
Author: Zach,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 18:48:07