R 菜鸟入门三大秘诀:
- 第一秘诀: 不要害怕 !学 R 非难事,Anyone can R (谁都可以贰).
- 第二秘诀: 能用就行 !只要能完成工作就行,R 代码写得漂亮与否并不重要。一个问题如果你有两个解决办法,那就选用你曾用过的那个。时间有富余的话再试另一个。
- 第三秘诀: 与人分享 !跟同学或同事分享 R 代码。这就是为啥 dapeng 写这个系列的帖子。
初见 R,可以用在线版品尝一下,点这里,用法在这里不做介绍了,因为 dapeng 还是建议菜鸟从下载安装开始。点击这里下载 R 程序。R 是跨平台的,一般来说,Linux 用户自己善于折腾,不必 dapeng 在这里唧唧歪歪了,因此晴耕雨讀志以 Windows 系统为例作介绍。目前 R 的最新版 2.15.3 安装程序只有 47 M,比起几个G的 Matlab 要苗条多了。下载完毕后安装,一路下一步
的傻瓜式安装即可。安装完毕之后就可以用了。
不过,初见的 R 在裸奔,界面丑陋, dapeng 建议给 R 穿上一件衣服,奔时看上去体面一些。能穿的免费衣服很多,人们各有所爱。dapeng 用过 Tinn-R、 RKward、 Vim+插件之后,最后选定了 Rstudio (点这里下载,免费正版哦)。选用 Rstudio 有诸多好处,最明显的就是把 R 常用的界面整合到了一起。 看吧,华丽丽的就像 Matlab ,默认四个子窗口:左上窗输入代码,左下窗看结果,右上窗显示变量值,右下窗显示作图和帮助:
图01.1. Rstudio 工作窗口。图片来自 Rstudio 官网,中文解释是 dapeng 加的。
Rstudio 还有很多好处,比如本文就是用 Rstudio 的 markdown 下写成的。下文均以 Rstudio 来示范 R 的使用。下载安装 Rstudio ,运行,然后选择菜单 File – New – R script ,或按快捷键 ctrl+shift+n,会新建一个 R 文件。好的,现在正式开始 R 之旅。
R 最简单的功能,是用作计算器。先在左上窗口输入以下代码,然后按窗口上方的运行(Run)按钮,或按快捷键 ctrl+回车,就会运行光标所在行的整行代码:
3 * (2 + 2)
## [1] 12
上面第一行是输入的代码示例,第二行用两个 #
号开头的是 Rstudio 左下窗显示的运行结果。如不另作说明,下文都用这种格式来区分代码和运行结果(谢谢谢益辉的 knitr!)。先不用管 # 号后面的 1 是什么。 R 的数学基本运算符有 加 +
, 减 -
,乘 *
,除 /
,乘方 ^
,整除的商 %/%
,整除的余数 %%
。
练习 01.1:计算365除以7得到的整除商和余数。
下面,我们开个平方。输入并运行
sqrt(9) # 开平方
## [1] 3
这里,sqrt
是开平方的函数,被开方的数必须放在圆括号里,这是 R 语法的基本规则之一。#
号后面一直到这一行的末尾是注释,注释部分不会被运行,这样是为了方便理解这句代码的用途。为了节省篇幅,下文尽量在代码中用注释的方式来说明。
有人读到这里可能会被吓住了:sqrt
,开玩笑,我怎么记得住啊!注意 R 入门第一秘诀: 不要被 R 吓住! 试试只输入 s
,然后按 tab 键,就会出现贴心的提示,所有以 s
打头的函数都列在里边了,用鼠标或箭头键选取就行了。在 s
后面再接着输入 q
试试。
其实,常用的函数就那么几个,用几次就不需要贴心提示了。而且函数名称都很好记,sqrt
就是 squre root 的缩写,你不是恰好想练英文吗。实在记不住,那就用基本运算符来求乘方好了, 9 ^ 0.5
即可。将来你甚至可以把 sqrt
改名叫做 kaipingfang
。条条道路通罗马, R 很灵活的。
常用函数都可以顾名思义:四舍五入 round()
, 截取整数 trunc()
, 开平方 sqrt()
,求绝对值 abs()
,指数函数 exp()
,自然对数函数 log()
,以 10 为底的对数函数 log10()
,三角函数 sin() cos() tan() asin() acos() atan()
。
练习 01.2:大牛 Knuth 有个趣闻:他创建的 TEX 版本号趋近于圆周率 pi,他创建的 Metafont 版本号趋近于自然对数的底 e。pi 和 e 的值是多少?
R 中 pi
的值已经定义好了,只要输入并运行
pi
## [1] 3.142
怎么只有这几位?精确度不够高啊。要提高精确度,需要
options(digits = 22) # 最大支持 22 位
pi
## [1] 3.141592653589793115998
exp(1) # 计算 e
## [1] 2.718281828459045090796
e <- exp(1) # 把 exp(1) 的值保存到一个变量 e 里,方便以后调用:
其中,<-
是个箭头,表示把右边的值赋给左边,Rtudio 中输入箭头的快捷键是 alt + _ 。也可以用等号 =
。箭头的灵活之处在于,还可以把左边的值赋给右边:
exp(1) -> e
好了,以后可以用e来代表自然对数的底了。查看 e 的值,可以看 Rstudio 的右上窗,也可以在代码窗口输入变量名 e
,然后 ctrl + 回车,
e
## [1] 2.718281828459045090796
就会在结果窗口出现 e 的值。e 可以用来做后续计算,比如:
round(e)^2
## [1] 9
注意, R 中大小写字母是有区别的,E
和 e
是不同的两个变量名。这叫做“大小写敏感”。
变量名的约定:
变量可以
- 是一个或多个字母,如
e, x, mydata
; - 也可以包括数字,如
a1, a2
; - 可以包括句点和下划线,如
temperature_air, humidity.max
。
但是,
- 不可以包含空格,如不能是
my data
; - 不可以用数字或小数开头,如不能是
2x
,也不能是.3y
; - 不可以是R的内置变量。这个不必担心,遇见的时候 R 自动发警告。
菜鸟只要注意 变量名不要加空格 ,就不会犯大错。
一个变量名可以存储很多数据。比如说,拜罗伊特月降水量从一月到十二月依次是:61, 45, 55, 46, 56, 79, 86, 57, 56, 56, 57, 71 mm。可以把这十二个数据赋值给一个变量 x,称为向量:
options(digits = 3) # 精确位数太多了,还是调回初始值 3 吧。
x <- c(61, 45, 55, 46, 56, 79, 86, 57, 56, 56, 57, 71) # 拜罗伊特月降水量
x
## [1] 61 45 55 46 56 79 86 57 56 56 57 71
x[4] # 四月的降水量。方括号中的 4 表示调用 x 中的第四个数值。
## [1] 46
练习 01.3:2003 年 8 月北京城区测得的 PM2.5 的质量浓度日变化(数据来源:Chan et al., 2005. Atmospheric Environment 39, no. 28 : 5113-5124), 从 0 时到 23 时 依次是97, 80, 64, 91, 87, 100, 128, 144, 150, 150, 150, 106, 78, 68, 62, 46, 55, 68, 84, 92, 95, 108, 128, 138 微克每立方米(十年前就超标了啊!)。计算 PM2.5 早高峰(6时到10时)时段占全天的比例。
R 支持向量运算。试试输入:
x + 100
## [1] 161 145 155 146 156 179 186 157 156 156 157 171
x 里的每一个数都加上了 100 。这就是向量运算的好处:简单的代码,避免逐个计算。
下面,让我们作出第一个图形来:拜罗伊特降水量的季节变化。敲7个键就行了:
plot(x) # 作图
是不是很简单?是不是很激动?懒人都喜欢简单的。
再进一步,我们来做统计运算,看看拜罗伊特每月降水量的平均值是多少。
(x[1] + x[2] + x[3] + x[4] + x[5] + x[6] + x[7] + x[8] + x[9] + x[10] + x[11] +
x[12])/12 # 计算平均值
## [1] 60.4
sum(x)/length(x) # 计算平均值的简化方法。sum() 是求和函数,length() 给出向量长度。
## [1] 60.4
mean(x) # 进一步简化。平均值函数。
## [1] 60.4
常用统计函数:求和 sum()
,平均值 mean()
,最大值 max()
,最小值 min()
,范围 range()
,中位数 median()
,标准差 sd()
,方差 var()
。
练习 01.4:使用练习 01.3 中所用的数据,做出北京 PM2.5 的日变化图。计算 PM2.5 出现的最大值、最小值、平均值。最大值出现在几点钟?
最后,请在Rstudio菜单栏点击 *File-Save*,或按快捷键 ctrl+s,把刚才输入的代码保存到一个文件里,下一节接着用。
好啦,以上就是 R 的基本操作和运算、作图、统计分析,你已经掌握了! R 就差不多学完啦!喝一杯庆祝一下吧。
有用的信息:
– | – |
---|---|
安装和运行 | cran, rstudio |
数学基本运算符 | + - * / ^ %/% %% |
常用函数 | round() trunc() sqrt() abs() exp() log() log10() sin() asin() |
赋值 | <- = -> |
作图 | plot() |
常用统计函数 | sum() mean() max() min() range() median() sd()var() |
其他 | R 菜鸟们,请早高峰时注意健康 |
( 连载中,待续 )