R语言是由统计学家为统计学开发的一套数据杀器,这个特殊的背景让这门语言在计算机专业人士眼中看起来也许很奇怪:语法松散、数据结构不严谨、充斥着黑魔法,等等。如果能结合数据分析的背景去看待它,就会发现它还是有很多精妙之处的。

学一门语言不可能通过两天时间把语法看完了事就行,必须得实战练习:一来巩固语法,二来增加经验值。

为了达到帮助大家真正掌握R语言,本课程秘制大杀器:R 语言互动式网络平台。没错,你只需要一个可以上网的浏览器,就可以随时随地写代码,做数据分析!

现在你看的是R语言基础入门课程。

课程简介

在这个入门课程里,你会掌握R这个开源语言的基本规则,体会到她的美妙之处。具体的内容包括向量,列表,矩阵,数据框。透过这门课程,你就可以开始着手对数据进行分析。

随着越来越多的学术和商业机构在日常工作中采用R语言做数据分析,她也逐渐成为统计和数据科学的主流语言。话不多说,我们即可开始学习吧!

R 软件安装

要愉快地使用R, 我们需要走两步:

界面熟悉和基本操作

R是一种区分大小写的解释型语言。你可以在命令提示符(>)后每次输入并执行一条命令,或者一次性执行写在脚本文件中的一组命令。R中有多种数据类型,包括向量、矩阵、数据框(与数据集类似)以及列表(各种对象的集合)。

上面介绍的是在自己电脑上安装和使用R语言的步骤。

下面讲讲我们的这个交互平台的使用,很简单,在下面的编辑器(script)输入代码,点击run就可以在工作台(console)运行了。

R使用#号来做注释的,#后面的内容都不会被当作R代码来运行,也就不会影响运行结果,例如下面的# Calculate 7 + 7 就不会被运行。我们使用#来给我们的代码作注解,以便于自己日后查看,或者与别人交流。

你也可以直接在Console里直接运行代码。

可以当作最基本的计算器来使用。

基本运算

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIENhbGN1bGF0ZSA3ICsgN1xuNys3XG5cbjctN1xuNyo3XG43LzdcbjdeMlxuc3FydCg3KVxuXG5tZWFuKG10Y2FycyRtcGcpXG5cbnZhcihtdGNhcnMkbXBnKVxuXG5zZChtdGNhcnMkbXBnKVxuXG5tb2RlKG10Y2FycyRtcGcpXG5cbnF1YW50aWxlKG10Y2FycyRtcGcpIn0=

赋值

R使用<-作为赋值符号。

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJteV92YXI8LTQyXG5teV92YXIifQ==

做个小练习:

  1. 在编辑器输入 my_pigs <- 5. 这会将 5 赋值给 my_pigs.
  2. 第二行注释下面输入my_pigs。这会将my_pigs的值输出.
  3. 点击CSubmit Answer, 然后看看工作台: 数字5已经被打印出来啦。现在呢,R就把变量 my_pigs 和数字5联系起来了!
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIEFzc2lnbiB0aGUgdmFsdWUgNSB0byB0aGUgdmFyaWFibGUgbXlfcGlnc1xuXG5cbiMgUHJpbnQgb3V0IHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgbXlfcGlncyIsInNvbHV0aW9uIjoiIyBBc3NpZ24gdGhlIHZhbHVlIDUgdG8gdGhlIHZhcmlhYmxlIG15X3BpZ3Ncbm15X3BpZ3MgPC0gNVxuXG4jIFByaW50IG91dCB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIG15X3BpZ3Ncbm15X3BpZ3MifQ==

有了5头猪,我们再来7个牛吧!做个超无聊的计算,看看我们有几个动物了?

  1. 将6赋值给my_cows
  2. 将变量 my_pigsmy_cows加总,并打印出来。
  3. 将加总所得结果赋值给新变量 my_farm
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIEFzc2lnbiBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZXMgbXlfcGlncyBhbmQgbXlfY293c1xubXlfcGlncyA8LSA1XG5cblxuIyBBZGQgdGhlc2UgdHdvIHZhcmlhYmxlcyB0b2dldGhlclxuXG5cbiMgQ3JlYXRlIHRoZSB2YXJpYWJsZSBteV9mYXJtIiwic29sdXRpb24iOiIjIEFzc2lnbiBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZXMgbXlfcGlncyBhbmQgbXlfY293c1xubXlfcGlncyAgPC0gNVxubXlfY293cyA8LSA2XG5cbiMgQWRkIHRoZXNlIHR3byB2YXJpYWJsZXMgdG9nZXRoZXJcbm15X3BpZ3MgKyBteV9jb3dzXG5cbiMgQ3JlYXRlIHRoZSB2YXJpYWJsZSBteV9mYXJtXG5teV9mYXJtIDwtIG15X3BpZ3MgKyBteV9jb3dzIn0=

我们在上面能把my_pigsmy_cows加起来,因为他们都是数值型的(numeric),如果有一个是字符串(character)就不行了,不信你试试?

代码已经在下面为你写好了,你点击运行试一试吧!
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIEFzc2lnbiBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZSBteV9waWdzXG5teV9waWdzIDwtIDUgXG5cbiMgRml4IHRoZSBhc3NpZ25tZW50IG9mIG15X2Nvd3Ncbm15X2Nvd3MgPC0gXCJzaXhcIiBcblxuIyBDcmVhdGUgdGhlIHZhcmlhYmxlIG15X2Zhcm0gYW5kIHByaW50IGl0IG91dFxubXlfZmFybSA8LSBteV9waWdzICsgbXlfY293cyBcbm15X2Zhcm0ifQ==

是不是报错啦?

R 里面的基本数据类型

在R里你可以使用很多种数据类型。最基本的有下面这些。

  1. 数值型(numerics.)如 4.5。
  2. 整数(integers.) 如7,整数也是数值型。
  3. 逻辑型(logical),(TRUE or FALSE) 他们的背后是1和0.
  4. 文本型(characters,)Text (or string) ,我们上面看到的“six”就这文本型。文本型的我们用双引号,特别注意这里指的是英文环境下的双引号。

小练习来一发,我假定你读懂这点英文题目没问题哈。

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIENoYW5nZSBteV9udW1lcmljIHRvIGJlIDQyXG5teV9udW1lcmljIDwtIDQyLjVcblxuIyBDaGFuZ2UgbXlfY2hhcmFjdGVyIHRvIGJlIFwidW5pdmVyc2VcIlxubXlfY2hhcmFjdGVyIDwtIFwic29tZSB0ZXh0XCJcblxuIyBDaGFuZ2UgbXlfbG9naWNhbCB0byBiZSBGQUxTRVxubXlfbG9naWNhbCA8LSBUUlVFIiwic29sdXRpb24iOiIjIENoYW5nZSBteV9udW1lcmljIHRvIGJlIDQyXG5teV9udW1lcmljIDwtIDQyXG5cbiMgQ2hhbmdlIG15X2NoYXJhY3RlciB0byBiZSBcInVuaXZlcnNlXCJcbm15X2NoYXJhY3RlciA8LSBcInVuaXZlcnNlXCJcblxuIyBDaGFuZ2UgbXlfbG9naWNhbCB0byBiZSBGQUxTRVxubXlfbG9naWNhbCA8LSBGQUxTRSJ9

这是啥数据类型?

还记得前面5+six的尴尬吗? 我们如果在做这个加法之前知道他们的数据类型不会瞎做了。 怎么知道数据类型的呢? 用class()这个函数。

做一做小练习,聪明如你没问题:
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIERlY2xhcmUgdmFyaWFibGVzIG9mIGRpZmZlcmVudCB0eXBlc1xubXlfbnVtZXJpYyA8LSA0MlxubXlfY2hhcmFjdGVyIDwtIFwidW5pdmVyc2VcIlxubXlfbG9naWNhbCA8LSBGQUxTRSBcblxuIyBDaGVjayBjbGFzcyBvZiBteV9udW1lcmljXG5jbGFzcyhteV9udW1lcmljKVxuXG4jIENoZWNrIGNsYXNzIG9mIG15X2NoYXJhY3RlclxuXG5cbiMgQ2hlY2sgY2xhc3Mgb2YgbXlfbG9naWNhbCIsInNvbHV0aW9uIjoiIyBEZWNsYXJlIHZhcmlhYmxlcyBvZiBkaWZmZXJlbnQgdHlwZXM6XG5teV9udW1lcmljIDwtIDQyXG5teV9jaGFyYWN0ZXIgPC0gXCJ1bml2ZXJzZVwiXG5teV9sb2dpY2FsIDwtIEZBTFNFXG5cbiMgQ2hlY2sgY2xhc3Mgb2YgbXlfbnVtZXJpY1xuY2xhc3MobXlfbnVtZXJpYylcblxuIyBDaGVjayBjbGFzcyBvZiBteV9jaGFyYWN0ZXJcbmNsYXNzKG15X2NoYXJhY3RlcilcblxuIyBDaGVjayBjbGFzcyBvZiBteV9sb2dpY2FsXG5jbGFzcyhteV9sb2dpY2FsKSJ9

本章结束!