2010-07-30 12 views
49

Używam R już od ponad roku i to było udane przedsięwzięcie. Ale często, okazuje się, że jest coś, czego nie mogę się dowiedzieć z powodu braku wiedzy na temat tego, jak go znaleźć lub na przykład.Nauka R. Dokąd zmierza jeden?

Stackoverflow,

mógłby Pan polecić drogę do nauki R w sposób zapewniający jedną z zestawem narzędzi do ich dyspozycji do rozwiązywania problemów o charakterze statystycznym?

Istnieje bogata wiedza w Internecie, między stroną projektu r-project a listami mailingowymi, ale wydaje się, że jest "wszędzie" i nigdzie, kiedy faktycznie jej szukasz.

Na przykład, kiedy po raz pierwszy zacząłem używać R, przeszedłem "Intro to R". Następnie przeczytałem definicję języka (która oczywiście nie została zapadnięta). Ale za każdym razem, gdy zadaję pytanie na temat Stackoverflowa, przedstawiam mu nową, złą funkcję, która jest rozwiązaniem wszystkich moich problemów na krótką metę. Moje pytanie brzmi: skąd wiesz, że te funkcje istniały w pierwszej kolejności? I jak można je znaleźć? Prawdopodobnie przeczytałeś coś lub znalazłeś jakieś zasoby, które odwróciły twoją naukę od wykładniczej części krzywej. Co to było?

Oczywiście funkcjonalność R jako narzędzia statystycznego jest szeroka. Dla moich własnych celów pracuję głównie z danymi ekonomicznymi lub finansowymi. Dlatego pomocne byłyby odpowiedzi na te pytania.

+7

'install.packages (" sos "); biblioteka (sos); findFn ("") 'może pomóc ... RSeek, SO, R bloggerom, kanałom RSS, listom dyskusyjnym ... reszta to kwestia cierpliwości. Powodzenia! – aL3xa

+3

Jednym z powodów, dla których R (i podobnych rzeczy) zajmuje trochę czasu, aby "uczyć się", jest to, że jest to * język *. Podobnie jak w przypadku uczenia się dowolnego języka, zanim osiągnie się "mistrzostwo", a nigdy się nie uczysz, minie trochę czasu. Im bardziej jest to język naturalny, tym bardziej jest to prawdą. W przypadku takich języków jak R, chciałbym zobaczyć książkę, która przyjmuje takie podejście do nauczania - coś takiego jak "R with Michel Thomas". –

+0

5 lat później, głosowanie. lol –

Odpowiedz

50

Całkowicie stronnicza odpowiedź: dowiedz się, plyr, reshape2 i ggplot2. Obejmują one 90% twoich potrzeb związanych z manipulowaniem danymi i wizualizacją. Wszystkie trzy pakiety mają spójną filozofię danych (którą dotyka książka ggplot2) i mają być spójne i łatwiejsze do nauki.

Zamiast uczyć się wielu specjalistycznych funkcji, naprawdę zachęcam do zapoznania się z prostymi funkcjami, które można elastycznie komponować, aby rozwiązać szeroki zakres problemów. Właśnie to Plyr stara się manipulować danymi i co ggplot2 robi dla wizualizacji. Oznacza to, że musisz zainwestować więcej czasu z góry, aby dowiedzieć się trochę o podstawowej teorii, ale uważam, że na dłuższą metę dobrze się to opłaci.

+0

Więc jestem niezłomnym fanem tych wszystkich pakietów i całkowicie się z tym zgadzam. Używając tego i pakietów do pobierania twoich danych (rzeczy typu RMySQL lub po prostu read.csv()) możesz zrobić prawie wszystko. – Dan

+2

Całkowicie się zgadzam, chociaż reklamowałeś swoje produkty ... =) – aL3xa

+2

Skromne, ale prawdziwe, prawie wszystko, co zrobiłem, dotyczyło jednego z tych pakietów ... – PaulHurleyuk

7

Jest darmowa książka może być zainteresowany: Introduction to Probability and Statistics Using R

+0

A jak ostatnio opublikowano (28 lipca 2010 r.). Dziękuję za to, poświęcę czas, aby to przejrzeć. –

+2

A jednak najlepsza część: jest licencjonowana na licencji GPL, można nawet pobierać pliki LyX/tex za pomocą wykresów eps/pdf. (Widziałem to na blogu Gregora Gorjanca, jeśli subskrybujesz RSS-blogerów RSS, prawdopodobnie dostaniesz te rzeczy, gdy są gorące) – aL3xa

7

Zacznę od tego:

moje pytanie, skąd wiedziałeś, funkcje te istniały w pierwszej kolejności?

Prosto - próbowaliśmy rozwiązać podobny problem i natknęliśmy się na tę funkcję. Jest albo dopasowany, albo nie odpowiada naszym potrzebom, ale teraz wiemy, że tam jest. Nie używałem R dużo osobiście, ale to, co opisujesz, jest krzywą uczenia się dla każdego języka programowania kiedykolwiek. Po pierwsze, uczysz się "gramatyki", czyli tego, co możesz zrobić. Potem próbujesz coś zrobić. Uważasz, że nie możesz.

Na tym etapie programista ma wiele opcji. Co robię osobiście? Zależy. Spróbuję wyszukać ten pakiet/nagłówek/bibliotekę/dowolne funkcje członkowskie, aby sprawdzić, czy coś pasuje do moich potrzeb. Mogę to zrobić Google, ponieważ jeśli naprawdę nie przesuniesz granic, ktoś prawdopodobnie próbował i nie zrobił tego wcześniej, a odpowiedź na to pytanie została udzielona. Jeśli przesuwasz granice, ktoś gdzieś prawdopodobnie próbował i zawiódł wcześniej, ale nie otrzymał odpowiedzi. Mogę wypróbować forum lub dwa, żeby zobaczyć, co się stanie. Osobiście nie używam IRC, ale jest to inna opcja, podobnie jak listy mailingowe w zależności od tego, jak wyspecjalizowany jest problem.

Mam też folder na moim komputerze, pełen książek, które przeszukuję w zależności od problemu i małą bibliotekę książek, które przeglądam/których się uczę, które często zawierają praktyczne, niezbyt łatwe do adaptacji przykłady.

Mój jedyny komentarz to próba przeczytania, że ​​specyfikacja języka raczej nie przyda się Tobie jako początkującym. Nie zrozumiesz w pełni, co to znaczy, ponieważ nie wypchnąłeś granic i nie próbowałeś jeszcze. Na przykład nowicjusz w C może wypróbować to:

char c = '7'; 
int x = (int) c; 

skonwertować znak "7" na liczbę całkowitą.To nie jest zły proces myślowy, dopóki nie zrozumiesz, jak działają postacie i ASCII, wtedy widzisz, dlaczego powyższe nie daje ci tego, czego chcesz.

Krótko mówiąc, myślę, że będzie to częścią procesu uczenia się i nie sądzę, żeby można było go skrócić. Pocieszeniem jest jak każde badanie, im więcej robisz, tym bardziej będziesz wiedział, gdzie szukać i jakie pytania zadawać w różnych społecznościach.

+0

Zgadzam się z tobą. Czas poświęcony na badanie swojego problemu jest najlepszym sposobem na naukę. Ale uważam też, że istnieją zdecydowanie najlepsze praktyki i zasoby, które inni stworzyli, które mogą znacząco pomóc - kiedy wiesz, gdzie szukać :) I to jest cel tego pytania. –

8

Mój sposób jak dowiedziałem R.

R zasobów:

  • Aby dowiedzieć R, najważniejszym zasobem jest google. szukaj: "TOPIC r-project", "TOPIC filetype: r" lub "TOPIC site: nabble.com".

  • Po drugie, spójrz na przykładowy kod dostarczony z większością pakietów. przejdź do "http://bm2.genes.nig.ac.jp/", wyszukaj temat i spójrz na przykładowy kod. uruchom go i dostosuj, w ten sposób często możesz rozwiązać część problemu.

  • Po trzecie: lista mailingowa r-help. Czytaj posty, podstawowe pytania są zadawane w kółko. Jeśli masz problem i całkowicie utknąłeś, zadaj pytanie na liście mailingowej.

  • Na koniec spójrz na kod źródłowy pakietów R. to najtrudniejsza część. czy można zmieniać kod do swoich potrzeb, opanujesz R ;-)

Kilka porad:

  • R ma stromą krzywą learing. to jest funkcja ;-), jest przeznaczona do rozwiązywania zaawansowanych problemów, a na koniec jesteś szybki, niż gdy używasz alternatywy dla R.

  • Znasz każdy pojedynczy pakiet R i funkcję, która jest istotna dla twojego problemu. siła R jest taka, że ​​dostępnych jest tak wiele pakietów (około 2000, jak sądzę). Zwykle zawsze jest pakiet, który jest bardziej odpowiedni lub już rozwiązuje twój problem.(niektóre strony pomocy są źle napisane i trudne do zrozumienia - przyzwyczaiłem się)

  • Książki R nie są pomocne w nauce. Tak, to prawda. Jeśli jesteś doświadczonym programistą i ekspertem statystycznym, nie potrzebujesz żadnej książki o R. (wyjątkiem jest książka Hadley'a Wickhama z książki ggplot2). Jeśli nie jesteś, naucz się programowania w ogóle i/lub zaawansowanych statystyk.

  • Niektóre paczki R mają znane błędy, których nikt nie naprawi (właściciel pakietu opuścił uniwersytet itp.). tylko ostrzeżenie, może to być trudne, jeśli szukasz błędu w kodzie, a błąd jest w pakiecie R.

+7

Nie jestem pewien, czy zgadzam się co do "Książki R nie są pomocne w nauce R". Zależy od książki i ucznia. –

7

Jedną z rzeczy, które robię, jest śledzenie kanału RSS pytań R na SO (https://stackoverflow.com/feeds/tag/r). Wtedy mogę przejrzeć, co inni ludzie pytali/odpowiedzieli.

Często będę faworyzował konkretne pytanie/odpowiedź, jeśli myślę, że go użyję, lub zanotuję ważne punkty w moim oprogramowaniu do notebooka (OneNote), o ile nie spróbuję samemu wypróbować pytanie/odpowiedź.

EDIT:

ja również polecam książkę Patricka spalić za R-Inferno. To nie jest książka szkoleniowa, jak opis wszystkich momentów i momentów, które Patrick znalazł (jak dotąd).

4

nauka pakiet RODBC współdziałać bezpośrednio z Oracle dane miały duży wpływ na moją pracę. Mój szef był zdumiony, gdy wyciągnąłem dane Oracle bezpośrednio do R i wykreowałem fabułę tylko w kilku linijkach kodu. Spróbuj to zrobić w Excelu!

Morał z opowieści, naucz się pobierać dane i manipulować nimi w R. Następnie przejdź do kilku fajniejszych rzeczy, takich jak ggplot.

1

Najczęściej zadawane pytania na temat [R], tutaj na Stackoverflow, https://stackoverflow.com/questions/tagged/r?sort=faq&pagesize=50, zawierają liczne powtarzalne przykłady, których można użyć do "uczenia się przez działanie".

Większość problemów jest bardzo powszechna i ostatecznie będzie to coś, co trzeba będzie odszukać jako początkujący. FAQ dostarcza również wysoce piśmiennych (i doświadczonych) przykładów użycia dla różnorodnych funkcji i przydatnych pakietów.

Jeśli dopiero zaczynasz naukę R i wolisz bardziej praktyczne podejście do nauki, często zadawane pytania nie powinny być pomijane jako potencjalne źródło wiedzy. Wiele pytań zapewnia także użyteczną dyskusję wokół paradygmatów samego języka (wektoryzacja, przepływ pracy, debugowanie to tylko kilka przykładów).

Prawie każde pytanie w FAQ jest warte poznania jako nowy użytkownik, ponieważ dotyka on elementów, które, mówiąc za siebie, chciałbym, abym został wskazany, gdy pierwotnie zadałem to pytanie.

Kilka przykładów:

2

że książka pomógł mi w nauce najbardziej było The Art of R Programming. Wiele książek o programowaniu może być suchych. Ponieważ R jest zwykle punktem wyjścia do programowania, ważne jest, aby głos materiałów był rezonujący ze studentem. Ta książka właśnie ze mną. Głos był bardzo swobodny i podobało mi się.