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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容