序
要想認真理解數(shù)據(jù),學習編程至關重要。毋庸置疑,數(shù)據(jù)科學工作必須在計算機上完成,但你可以有兩種選擇:學會使用具有圖形用戶界面(GUI)的統(tǒng)計軟件,或者學會一門編程語言。Garrett和我都深信,對于每天跟數(shù)據(jù)打交道的人來說,編程是一項必需的技能。圖形用戶界面簡單易用,但也有著根本的局限性,主要體現(xiàn)在它束縛了好的數(shù)據(jù)分析所應具備的以下三個屬性。
· 可再現(xiàn)性
可再現(xiàn)性指能夠完全再現(xiàn)之前某個分析結(jié)果的能力,這是優(yōu)秀科學的重要特征。
· 自動化
當數(shù)據(jù)發(fā)生改變時(往往經(jīng)常如此),能夠快速更新分析結(jié)果的能力。
· 溝通
從形式上看,代碼僅僅是一段文本,十分利于溝通。對于一門編程語言的學習者來說,代碼的文本特征極大地降低了學習的門檻:只要有不懂的問題,就可以把代碼放到郵件列表中提問,或者放到Google的搜索框中搜索,或者上傳到Stack Overflow找高手解惑,無論哪種途徑都能夠得到解答。
不要對“編程”二字望而生畏!只要有合適的動力,每個人都可以學好編程,而本書的目的就是充分調(diào)動你學習編程的積極性。這并不是一本編程參考書,它圍繞著三個實際的編程挑戰(zhàn)展開。如果能夠順利地掌握應對這三個挑戰(zhàn)的技術,你將掌握關于R編程的基本知識,甚至還能學習一些中級技能,比如向量化編程、作用域和S3方法等。動手解決實際問題對于學習一門編程語言來說十分重要。學習編程不在于能夠死記硬背多少函數(shù),而在于學習函數(shù)并將之用于解決實際問題。總而言之,編程需要在實踐中學習,而不是靠死記硬背。
學習編程的道路布滿荊棘,你會不時地因為棘手的問題而感到沮喪。與學習其他語言一樣,熟練掌握程序語言并非一朝一夕之事。在學習編程的過程中感到沮喪是難免的,它聽起來十分消極,但實際上對于學習本身來說是有所裨益的。沮喪的感覺是由大腦的懶惰造成的,它在提示你放棄做這么難的事情,去找些容易或有趣的事情來做。有過健身經(jīng)歷的人都知道,如果想更加健美,身體越是抗拒,你就越要鞭策自己去努力鍛煉。學習編程也一樣,大腦越是感到沮喪,你越應該鞭策自己去戰(zhàn)勝沮喪。認識到這一點之后,在學習編程的過程中,如果遇到了令人沮喪的難題,要樂觀積極地對待這樣的感覺:因為你是在挑戰(zhàn)自我。如果每天都能挑戰(zhàn)自己一點點,可以預見,不用多久你就會成為一名信心滿滿的程序員。
本書淺顯易懂,娓娓道來,又十分深入與實用。如果你想跟我或者Garrett學習R編程卻沒有機會與我們當面交流,這本書是不二之選。讀這本書于我而言是一種享受,希望你也有同感。
——Hadley Wickham RStudio首席科學家
順便說一句,Garrett完全沒有介紹自己的成果,其實有點過謙了。他寫的R包lubridate是處理時間類數(shù)據(jù)的必備神器,不信大家可以試一試。
- Learn ECMAScript(Second Edition)
- Mastering JavaScript Functional Programming
- jQuery EasyUI網(wǎng)站開發(fā)實戰(zhàn)
- C語言程序設計教程(第2版)
- Clojure for Domain:specific Languages
- 從0到1:HTML+CSS快速上手
- Learning Laravel 4 Application Development
- Hands-On Automation Testing with Java for Beginners
- Python語言實用教程
- Python:Deeper Insights into Machine Learning
- RubyMotion iOS Develoment Essentials
- 創(chuàng)意UI:Photoshop玩轉(zhuǎn)APP設計
- 單片機原理及應用技術
- Getting Started with Web Components
- Apache Solr for Indexing Data