作者Wush978 (拒看低质媒体)
看板R_Language
标题[心得] R 学习经验分享
时间Sat Nov 2 15:03:25 2013
我个人学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)
1F:→ celestialgod:版主很认真 推!! 11/02 15:08
2F:推 wertymin24:推~优良板主~硕班时从你的文章学了不少 11/02 16:51
3F:推 allen1985:感叹自己用了五六年R 还是只会 for if... 11/02 21:17
4F:→ allen1985:推版主!!! 11/02 21:17
5F:推 skylikewater:推! 11/03 00:37
6F:推 jjmr:push!! 11/03 00:44
7F:推 bmka:推板主 11/03 08:46
8F:推 ccwang002:推版主~ 11/03 14:34
9F:推 shirley587:推一个 用心 11/03 19:09
10F:推 gcanny:推版主用心.. 11/03 22:35
11F:推 wisdom8002:推用心! 11/04 21:28
12F:推 umii:推,好清楚 11/20 22:39
13F:推 adgjlsfhk123:推! 11/27 19:37
14F:推 s4552752: 谢谢分享 03/02 20:04