R语言入门笔记(1) - R语言简介

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
    原文作者:Jtag特工
    原文地址: https://www.jianshu.com/p/bebedeafa577
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞