R语言简介
R语言是基于S语言的一种开源实现。S语言是贝尔实验室最早开发的一种用于统计的工具,后来成为商业的S-PLUS软件,是一种与SAS和SPSS齐名的统计软件。
R语言的官方网址是:[https://www.r-project.org/]
获取帮助的方式
help(函数名)
example(函数名)
加载并执行代码
从文件中加载.r文件
source(文件名)
将执行结果写入文件
sink(文件名)
代码续行
在行尾使用"+"可进行续行
向量
可以用c()函数来生成一个向量,然后通过 <- 运算符赋值给一个向量
例:
> y <- c(12,33,12,22)
> y
[1] 12 33 12 22
对向量的操作,可以使用普通的+,-,*,/,^等操作符,也可以使用更多的函数,比如:log, sin, tan, max, mean, sum等。
可以使用sort, length, sqrt对向量进行排序,求长度,求平方根。
复数向量
向量支持以 实部 + 虚部i的方式
例:
> y1 <- c(2+1i, 3-9i, 4, 6+1i)
> y1
[1] 2+1i 3-9i 4+0i 6+1i
序列
可以使用1:m和1:(m)产生规则的序列
例:
> y2 <- c(1:22)
> y2
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
> y3 <- c(1:(23))
> y3
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
通过seq函数生成序列
seq是生成序列的最好工具。可以使用它产生符合某种规则的序列,seq函数有5个参数:
- from: 起始值
- to: 终止值
- by: 步长值
- length.out: 长度,元素个数
- along.with: 使用这个序列的长度来产生新的序列
下面是一些例子:
> seq(1,5)
[1] 1 2 3 4 5
> seq(1,9,2)
[1] 1 3 5 7 9
> seq(from=1, to=15, by=2)
[1] 1 3 5 7 9 11 13 15
> seq(from=1, to=15, length.out=3)
[1] 1 8 15
> seq(from=2,along.with=c(1:5))
[1] 2 3 4 5 6
rep函数
rep函数对序列中的元素进行重复后进行拼接,拼接的方式有两种:
- 使用times参数将所有元素做为整体拼接
- 使用each参数将每个元素进行拼接
例:
> rep(y3,2)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2
[26] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
> rep(y2,times=2)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3
[26] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
> rep(y3,each=2)
[1] 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13
[26] 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23
逻辑型向量
逻辑型的值有TRUE, FALSE, NA, T, F等。可使用>,>=, ==, !=, &, |, ! 等操作产生逻辑值。
无效值NA, NaN主要用于应付某操作没完成、结果未知的情况。
例:
> c(1:4,NA,2:3)
[1] 1 2 3 4 NA 2 3
> x1 <- c(1:4,NA,2:3)
> is.na(x1)
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE
字符型向量
字符串用单引号或双引号包围。
\n: 新行
\r: 回车
\t: tab
\b: 退格
\\: \
\`: '
\": "
索引型向量
索引型向量按数据类型分为以下几种情况:
- 在逻辑值型索引中,索引向量的元素为逻辑值型,逻辑值为TRUE的向量将被放在输出结果中。
- 在正整数型索引中,索引向量是正整数类型,用于指示要哪些位置的元素输出到结果中,位置可以重复使用。
- 对于负数索引,会将这些用负数标明的索引从结果集中删除。
- 对于字符串索引,以字符串来标记位置
例1,逻辑型索引
> xx1 <- c(11, 22, 3388)
> jg <- xx1 > 22
> jg
[1] FALSE FALSE TRUE
> yy1 <- xx1[jg]
> yy1
[1] 3388
对象集属性
固有属性
对象集的固有属性有mode和length两种。
mode是对象的类型,主要有:numberic, complex, logical, character和raw等。
length顾名思义,向量中元素的个数
例:
> mode(yy1)
[1] "numeric"
> mode(jg)
[1] "logical"
> mode(y1)
> length(jg)
[1] 3
设置对象属性
可使用attr(object, name)的方式自定义属性
因子和有序因子
因子用来存储类型于枚举的变量。
在R语言中使用factor()函数生成因子对象,语法是:factor(data, levels, labels).
其中,data是数据,levels是因子水平向量,labels是因子的标签。
例:
> my_num <- c(11,22,34,71,124,68,21)
> nums <- factor(my_num)
> nums
[1] 11 22 34 71 124 68 21
Levels: 11 21 22 34 68 71 124
levels函数生成因子水平向量,即是去重后的向量。
还可以使用ordered函数生成有序因子。
例:
> ordered(nums)
[1] 11 22 34 71 124 68 21
Levels: 11 < 21 < 22 < 34 < 68 < 71 < 124
> ordered(my_num)
[1] 11 22 34 71 124 68 21
Levels: 11 < 21 < 22 < 34 < 68 < 71 < 124
``
cut()函数将数据转换成因子或有序因子,并进行分组。
例:
```R
> score <- c(88,85,76.5,97,92,77,74,80,63,100)
> cut(score, breaks = 3)
[1] (87.7,100] (75.3,87.7] (75.3,87.7] (87.7,100] (87.7,100] (75.3,87.7]
[7] (63,75.3] (75.3,87.7] (63,75.3] (87.7,100]
Levels: (63,75.3] (75.3,87.7] (87.7,100]
> cut(score, breaks = 2)
[1] (81.5,100] (81.5,100] (63,81.5] (81.5,100] (81.5,100] (63,81.5]
[7] (63,81.5] (63,81.5] (63,81.5] (81.5,100]
Levels: (63,81.5] (81.5,100]
> ordered(score)
[1] 88 85 76.5 97 92 77 74 80 63 100
Levels: 63 < 74 < 76.5 < 77 < 80 < 85 < 88 < 92 < 97 < 100
循环语句
for循环
R语言中的for循环不能指定起始值、终止值和步长值。
例:
> z1 <- c()
> x1 <- (1:10)
> y1 <- (11:20)
> for(i1 in 1:length(x1)){
+ z1[i1]=x1[i1]^2+y1[i1]^2
+ }
> z1
[1] 122 148 178 212 250 292 338 388 442 500
while循环
while语句每次会检查循环条件,如果条件不再满足,则终止循环。
例:
> x2 <- c(1:10)
> i2=1
> while(x2[i2]^2<10){
+ i2=i2+1
+ x2[i2]=x2[i2]^2
+ }
> x2
[1] 1 4 3 4 5 6 7 8 9 10
条件语句
R语言的条件语句仍然是if...else语句
例:
> z3 <- c()
> x3 <-(1:10)
> y3 <- (11:20)
> for(i3 in 1:length(x3)){
+ if ((x3[i3]^3 > y3[i3]^2))
+ z3[i3]=x3[i3]^3
+ else
+ z3[i3]=y3[i3]^2
+ }
> z3
[1] 121 144 169 196 225 256 343 512 729 1000