[心得] R 學習經驗分享

看板R_Language作者 (拒看低質媒體)時間11年前 (2013/11/02 15:03), 編輯推噓12(1202)
留言14則, 13人參與, 最新討論串2/2 (看更多)
我個人學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
感嘆自己用了五六年R 還是只會 for if...
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
push!!
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
文章代碼(AID): #1ITAF4Tl (R_Language)
文章代碼(AID): #1ITAF4Tl (R_Language)