R语言swirl教程(R Programming)1——Basic Building Blocks


在本节课中,我们将探索R编程语言的一些基本构建模块。

如果在任何时候您想了解与R相关主题的更多信息,您在提示符输入help.start(),它将打开一个资源菜单(在RStudio或您默认的web浏览器中)。

最简单的形式,R可以用作交互式计算器。输入5 + 7并回车。

5 + 7
[1]12

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

在这种情况下,我们可能想在第二次计算中使用上面的结果。而不是每次重新输入5 + 7,我们可以创建一个新的变量来存储结果。

在R中给变量赋值的方法是使用赋值运算符,也就是一个“小于”的符号,后跟一个“减号”。它是这样的: <-

可以把赋值运算符想象成一个箭头。右侧赋值给左边的变量名。

试试将5 + 7的结果赋值给一个名为x的新变量。

x <- 5 + 7

您将注意到R这次没有打印12的结果。要看到变量 x 的内容,输入 x 回车。

x
[1]12

现在,将x - 3的结果存储在一个新的变量y中。

y <- x - 3

y的值是多少?输入y来找出答案。

y
[1]9

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

创建向量最简单的方法是使用 c() 函数。要创建包含数字1.1、9和3.14的向量,输入c(1.1、9、3.14)。试一试然后将结果存储在一个名为z的变量中。

z <- c(1.1, 9, 3.14)

任何时候你对一个特定函数有疑问,你可以访问R的内置帮助文件通过 ‘?’ 命令。例如,如果您想了解关于 c() 函数的更多信息,请键入 ?c ,函数名后面通常没有括号。试一试。

?c

输入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。

z * 2 + 100
[1] 102.20 118.00 106.28

首先,R将z中的三个元素各乘以2。然后给每个元素加100得到你上面看到的结果。

其他常用的算术运算符有 +、-、/ 和 ^ (其中x^2表示“x²”)。用 sqrt() 来取平方根,用 abs() 函数取绝对值。

取z - 1的平方根并将其赋值给一个新的变量my_sqrt。

my_sqrt <- sqrt(z - 1)

在我们查看my_sqrt变量的内容之前,你认为它包含什么?

1:单个数字(i。e是长度为1的向量
2:长度为3的向量
3:长度为0的向量(即空向量)

选择:2

输出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

你认为哪一种说法是正确的?

1: my_div是单个数字(i。e是长度为1的向量
2: my_div未定义
3: my_div的第一个元素等于z的第一个元素除以my_sqrt的第一个元素,以此类推……

选择:3

打印my_div的内容。

my_div
[1] 3.478505 3.181981 2.146460

当给定两个相同长度的向量时,R简单地执行指定的算术运算(’ + ', ’ - ', ’ * '等)逐个元素。如果向量的长度不同,R “循环”短的向量直到它和长的向量一样长。

当我们做 z * 2 + 100时候,z是一个长度为3的向量,技术上2和100是两个长度为1的向量。R重复2或100形成由2(或100)组成的向量。换句话说,当你要求R计算z * 2 + 100时,它真正计算的是z * c(2,2,2) + c(100, 100, 100)

为了看看这个向量“循环”工作的另一个例子,尝试加和c(1,2,3,4)和c(0,10)。

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

如果较短向量的长度与较长向量的长度不相等,R仍然会应用“循环”方法,但是会抛出一个警告来让你知道一些错误可能发生。

以c(1, 2, 3, 4) + c(0, 10, 100)为例。

c(1,2,3,4) + c(0,10,100)
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

在结束这节课之前,我想向你展示几个节省时间的技巧。

在本课的早些时候,你算出了z * 2 + 100。假设你犯了一个错误你要加1000而不是100。您可以重新键入表达式,或者……

在许多编程环境中,向上箭头会回到前面的命令。试用你键盘上的向上箭头,直到你得到这个命令(z * 2 + 100),然后改变100为1000,回车。如果向上箭头不能工作,只需键入正确的命令。

z * 2 + 1000
[1] 1002.20 1018.00 1006.28

最后,让我们假设您想查看前面创建的变量内容,但是你不记得你命名它my_div还是myDiv。你可以两种都试一试作品,或者……

可以输入变量名的前两个字母,然后按Tab键(可能大于一次)。大多数编程环境都会提供一个你已经创建的以my开头的变量列表。这被称为自动完成,当您有很多自动完成功能时,它会非常方便。试一试。(如果自动完成无效,那就打my_div,然后回车。)

my_div
[1] 3.478505 3.181981 2.146460