[心得] R 學習經驗分享
我個人學R 大約4 ~ 5 年了,R 嚴格來說是我碰過的第二個程式工具。
# 會R 之前
高中時期,我有段時間很喜歡玩mud ,
所以那時候,就用Zmud這個工具寫了一些機器人,會一點初步的迴圈,條件判斷。
大學念數學系,在大三時也玩過Mathematica。
但是整體來說,我沒有系統性的學過程式語言。
# 碩士班
由於碩班統計所的需要,我開始自學R 。
一開始我也不知道有什麼資源,就是開始看R 導論,先一路硬看到迴圈和條件控制,
看不懂就掃過去,沒花時間搞懂,但是專有名詞可能有個印象,
就直接開始寫作業了。
這時候會的就是:
- 賦值: <-
- 數值運算:+,-,*,/
- 布林運算: &,|,!
- 流程控制: for, if, while
就這樣,很多統計上要用的演算法,我可以用上面的東西硬算出來了。
畫圖就只會畫x-y plot,因為這就是中學學過的座標系統,對我來說很熟悉。
但是我毫無資料結構的概念,所以說就一直不懂下面的程式碼為什麼不能跑:
```r console
> X <- cbind(x = 1:10, y = 2 * (1:10) + rnorm(10))
> lm(y ~ x, X)
Error in model.frame.default(formula = y ~ x, data = X, drop.unused.levels =
TRUE) :
'data' must be a data.frame, not a matrix or an array
```
碩班的過程,我對R 的功能也越來越熟悉,但是我仍然一直沒有充份的理解:
- data.frame是什麼?
- 為什麼R 的迴圈這麼慢?
這些東西問別人也只能得到簡略的答案,因為背景知識太少,所以就是不懂。
研究時期,我也用R 上面的基本數值運算功能,硬寫出如MCMC之類的演算法,
但是跑的非常慢,所以那時候我滿腦子都是想要把模擬加速的想法。
網路上雖然有許多資源,但是因為我資工底子幾乎是0 ,所以也看不懂。
# 碩士畢
畢業後,我想知道更多R 相關的知識,想要寫出跑更快的模擬,還有一些其他的想法,
我就跑到中研院資訊所做助理。
途中,我自學了一些Rmpi、C 、Rcpp以及製作套件的方法。也發現「國網中心的R 筆記」
因為聽說R 和Linux 比較搭配,所以我工作開始只用Linux 系統。
一年後,我想要把程式寫的更好,所以就跑到內湖一間小公司待了一年練程式,
那時候呼嚕嚕的把php, C++ 看的更精,對一些基本程式語言的功能也有更深入的理解。
學習資源也變得很硬了:
- C++ Primer
- php 官方網站
我還把Soft_Job版或是其他網路上看到的,其他人推薦的程式的書買下來啃。
一本書通常不會看太久,通常程式碼我也不細看,就只是記得它能夠解決什麼問題,
之後遇到了再回頭翻。
我也發現,學一個語言最正統的方式就拭去他的官方網站,找他的Documentation。
隨著C / C++ 的知識的進步,我也開始看php,R 這類scripting language的原始碼。
所以現在我大概知道,為什麼R 的迴圈這麼慢了,
以及從更底層的觀點看R 的資料結構到底是什麼。
學習程式也不再是只停留在語法的階段,而是學習程式語言的特性。
重點也已經從學R ,變成用R 做好各種應用。
也由於對這個程式語言的愛好,所以和學弟創辦Taiwan R User Group,繼續前進!
# 總結
回頭看,走這條路就是要不斷的學習,因為東西真的是太多了,永遠學不完。
碩士班學基礎,畢業後則是要靠自己自學。
這些基礎中,最根本的就是中學以及大學的數學,以及邏輯。
我算是很幸運,高中就已經知道怎麼寫指令式程式語言,所以一開始學R 就只是學語法。
但是因為沒有其他資工相關的背景知識,所以一開始也只能學到這樣。
數值運算上,從簡單的四則運算,到微積分、線性代數、機率和統計都是基礎知識。
學R 上,我是從以下入門:
- [R 導論](http://www.biosino.org/pages/newhtm/r/tchtml/)
- [R 學習筆記](http://statlab.nchc.org.tw/rnotes/)
我想現在有許多更好的入門管道了,例如Coursera的課程。
之後去補充各種資工背景知識,更深入的理解電腦,這部份很雜,所以我列一些重要的:
- [C++ Primer]
- 資料結構和演算法的教科書
現在應該也有更好的資源了。
事後覺得,如果那時候有Coursera,我應該可以學更快了也說不定。
然後從官方的文件、範例及原始碼來學習了。
如:
- [R FAQ](http://cran.r-project.org/doc/FAQ/R-FAQ.html)
- [R for Windows FAQ](http://cran.r-project.org/bin/windows/base/rw-FAQ.html)
- [Writing R Extensions](http://cran.r-project.org/doc/manuals/R-exts.html)
寫Rcpp的話,常看的就是`/usr/share/R/include`底下的各種`.h`檔案,
想要理解R 底層的知識除了[Writing R Extensions]之外,還要搭配
`/usr/share/R/include/Rinternals.h`
最後就會發現,學習永遠學不完了... XD
--
歡迎到ptt R_Language版分享R 的相關知識
歡迎加入 Taiwan R User Group : http://www.facebook.com/Tw.R.User
聚會報名 http://www.meetup.com/Taiwan-R/
聚會影片 https://www.youtube.com/user/TWuseRGroup
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.138.85
※ 編輯: Wush978 來自: 1.34.138.85 (11/02 15:04)
→
11/02 15:08, , 1F
11/02 15:08, 1F
推
11/02 16:51, , 2F
11/02 16:51, 2F
推
11/02 21:17, , 3F
11/02 21:17, 3F
→
11/02 21:17, , 4F
11/02 21:17, 4F
推
11/03 00:37, , 5F
11/03 00:37, 5F
推
11/03 00:44, , 6F
11/03 00:44, 6F
推
11/03 08:46, , 7F
11/03 08:46, 7F
推
11/03 14:34, , 8F
11/03 14:34, 8F
推
11/03 19:09, , 9F
11/03 19:09, 9F
推
11/03 22:35, , 10F
11/03 22:35, 10F
推
11/04 21:28, , 11F
11/04 21:28, 11F
推
11/20 22:39, , 12F
11/20 22:39, 12F
推
11/27 19:37, , 13F
11/27 19:37, 13F
推
03/02 20:04, , 14F
03/02 20:04, 14F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章