R语言学习-1-Basic Building Blocks

介绍R中的一些基本模块,所有的命令都可以在Rconsole里交互式进行。 推荐使用Rstudio进行学习

变量

R最简单的应用,是可以作为交互式的计算器,在console里输入5 + 7然后回车:

> 5 + 7 #输入,R的控制台里输入的前方会有>标志
[1] 12  #输出结果

默认情况下,R仅打印结果12。 但是,R是一种编程语言,通常我们使用一种编程语言而不是计算器的原因是为了使某些过程自动化或避免不必要的重复。

在这种情况下,我们可能需要在第二个计算中使用上面的结果。 不必每次都需要重新键入5 + 7,我们只需创建一个存储结果的新变量即可。

在R中为变量分配值的方式是使用赋值运算符,该运算符只是一个“<”符号,后跟一个“-”。 看起来像这样:<-。就像一个箭头,把箭头右边的值分配给箭头左侧的变量名称。

我们把上面 5 + 7的结果赋值给名称为x的新变量,我们只需要输入:

> x <- 5 + 7

可以看到这次没有直接输出12。因为当我们使用赋值运算符时,R默认我们不希望立即看到结果,而是以后打算将结果用于其他用途。

要查看变量x的内容,只需键入x并按下回车:

> x
[1] 12

现在我们再把 x-3赋值给变量y:

> y <- x - 3

看看y的值是多少?

> y
[1] 9

向量

现在,让我们创建一个小的数字集合,称为向量(vector)。任何包含数据的对象都称为数据结构,而数值向量是R中最简单的数据结构类型。 实际上,即使单个数字也被认为是长度为1的向量。

创建向量的最简单方法是使用c()函数,该函数代表“连接(concatenate)”或“组合(combine)”。 若要创建包含数字1.193.14的向量,只需要输入c1.1,9,3.14),我们把这个结果保存到变量z

> z <- c(1.1, 9, 3.14)
[1] 1.10 9.00 3.14

每当我们对特定函数有疑问时,都可以通过?命令访问R的内置帮助文件。例如我们想了解更多关于c()函数的信息,我们可以在控制台输入?c来查看,记住这个时候不需要后面的括号

> ?c

这个时候,R就会弹出c()函数的帮助文档,如果你使用的是Rstudio,那么帮助文档在右下方的窗口内。

现在回到我们上面的z变量,我们在控制台输入z,会输出什么?

> z
[1] 1.10 9.00 3.14 #没有输入时的逗号了

我们还可以通过组合向量来创建新向量,比如创建一个包含z, 555, z的新向量。这次我们不赋值给新变量,以便立即看到结果。

> c(z, 555, z)
[1]   1.10   9.00   3.14 555.00   1.10   9.00   3.14

算数表达式

数值向量还可以直接用于算术表达式:

> z * 2 + 100
[1] 102.20 118.00 106.28

可以看到R将向量z中的每个元素都乘以2,然后再每个元素加上100。 其他常见的算数运算符包括:

'-'
'/'
'^' #平方
sqrt() #平方根
abs() #绝对值

我们来对z - 1的向量进行取平方根,并赋值给my_sqrt

> my_sqrt <- sqrt(z - 1)

那么my_sqrt的值是什么呢?

> my_sqrt
[1] 0.3162278 2.8284271 1.4628739

与前面的计算类似,R首先从z的每个元素中减去1,然后取每个元素的平方根。 这样就得到了与原始向量z相同长度的向量。

我们再创建一个新变量my_div,代表z除以my_sqrt的结果。

> my_div <- z / my_sqrt
> my_div
[1] 3.478505 3.181981 2.146460

当给定两个具有相同长度的向量时,R逐个元素简单地执行指定的算术运算。 如果向量的长度不同,R将循环较短的向量,直到其长度与较长的向量相同

例如上面的z * 2 + 100的例子,z是一个长度为3的向量,而2100可以看作长度为1的向量。在R里面,实际发生的运算是z * c(2, 2, 2) + c(100, 100, 100)

再看一个关于向量循环的例子:

> c(1, 2, 3, 4) + c(0, 10)
[1]  1 12  3 14

第二个向量被R自动循环了。

如果较短的向量无法均匀的划分较长向量的长度,R会在结果中输出一些警告:

> c(1, 2, 3, 4) + c(0, 10, 100)
[1]   1  12 103   4
Warning message:
In c(1, 2, 3, 4) + c(0, 10, 100) :
  longer object length is not a multiple of shorter object length

省时小技巧

  • 在控制台按方向键,可以看到历史的输入记录
  • 如果忘记变量或者函数名,可以使用Tab键自动补全

本文首发于公众号:柠檬培养师(ID: yantinger90),欢迎关注!
R语言学习-1-Basic Building Blocks

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