R语言系统教程(一):向量及其相关操作
前言
准备用业余时间写一些关于R语言的系统教程,主要思路上计划结合自己的使用经验,不追求更新速度,甚至可能会一小节一小节的写,但力求对R语言中涉及到的内容做系统全面的剖析,因此有时读者可能会觉得笔者很啰嗦,一些很简单的东西却要说个半天,还请大家多多谅解。
主要参考书籍如下:
毅, 立萍. 统计建模与 R 软件[M]. 清华大学出版社, 2007.
另外随着笔者的不断学习和实践,随时可能会更改或添加一些内容,欢迎随时向笔者指出教程中的错误与不足。
1.1 向量(Vector)
赋值
首先是最简单的直接赋值,将一个向量以c()的形式直接赋给一个变量x,并且注意与其他脚本语言相同,在R语言中使用一个变量名是不需要事先声明的,另外,下面的代码块中##代表console的输出结果,本系列之后也是如此。(打脸 ̄□ ̄:由于格式问题,作者从第三期开始更改了代码格式)
x = c(10.4, 5.6, 3.1, 6.4, 21.7)
x
[1] 10.4 5.6 3.1 6.4 21.7
除此之外还可以通过<-或者assign()函数赋值
```c
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
x
## [1] 10.4 5.6 3.1 6.4 21.7
assign("x",c(10.4, 5.6, 3.1, 6.4, 21.7))
x
## [1] 10.4 5.6 3.1 6.4 21.7
并且<-还可以反向
c(10.4, 5.6, 3.1, 6.4, 21.7) -> x
x
## [1] 10.4 5.6 3.1 6.4 21.7
还可以通过已有的向量来定义(赋值)新的向量
y = c(x, 0, x)
y
## [1] 10.4 5.6 3.1 6.4 21.7 0.0 10.4 5.6 3.1 6.4 21.7
运算
首先是向量的加法运算,与数学常识相同,两个length相同的vector才可以相加。
x = c(-1, 2, 0)
y = c(3, 8, 2)
v = x + y
v
## [1] 2 10 2
数乘运算:
u = 2*x + y + 1
u
## [1] 2 10 2
两个vector直接相乘对应的运算是其二者对应项相乘,同样要求length相同
x*y
## [1] -3 16 0
两个vector直接相除对应的运算是其二者对应项相除,同样要求length相同
x*y
## [1] -3 16 0
vector平方对应的是其对应项分别平方
x^2
## [1] 1 4 0
将一个vector的vector指数运算即对其对应项分别进行对应的指数运算
y^x
## [1] 0.3333333 64.0000000 1.0000000
从以上几个例子可以看出,对vector的直接运算往往都是对其每个单项进行操作,体现了一种批处理的思想。一些常用运算还有
log(y)
## [1] 1.0986123 2.0794415 0.6931472
exp(y)
## [1] 20.085537 2980.957987 7.389056
sqrt(y)
## [1] 1.732051 2.828427 1.414214
sin(y)
## [1] 0.1411200 0.9893582 0.9092974
还有cos(),tan()等,另外注意sqrt(-2)是非allowed的,但是可以
sqrt(-2+0i) # 0*i is also not allowed
## [1] 0+1.414214i
常用函数
还有一些应用于向量对象的很有用的函数,首先是min()函数,可以返回vector中的最小值
x = c(10,6,4,7,8)
min(x)
## [1] 4
同理还有max(),返回最大值
max(x)
## [1] 10