Lesson 1: 基本构件

本课时,我们将探索一些 R 语言的基本构件。

如需帮助,可以使用 help.start()

最简单的形式,R 语言可用作交互式计算器:

> 5 + 7
[1] 12

我们可以创建一个变量来储存计算结果,而不用每次都重新输入 5 + 7 ,在 R 语言中,给变量赋值使用的符号是 <- (小于号后面跟一个减号)。

可以把这个分配运算符看作一个箭头,把箭头右侧的值赋给左侧的变量,例如:

> x <- 5 + 7

你可能注意到了,R 并没有直接输出计算结果 12,当你使用分配运算符时,R 假设你不想立即看到计算结果,而是倾向于之后要使用此计算值。如果想查看变量 x 的内容,直接输入 x,然后按 Enter,

> x
[1] 12

下面创建一个新变量 y ,使 y = x - 3

> y <- x -3
> y
[1] 9

使用 y<-x-3y <- x - 3,完全取决与你的个人习惯,但是在每个分配运算符两侧各留一个 空格 是个很好的习惯。

现在,让我们创建一个称为 向量 的小的数字集合。

在 R 语言中,任何包含数据的对象都可称为一个数据结构,而数值向量是最简单的数据结构类型。

最简单的创建一个向量的方式是使用 c() 函数, 它代表的意思是 concatenatecombine。下面创建一个包含数字 1.1,9 和 3.14 的向量 z:

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

如果对某个特定函数存在疑问,可以使用 "?" 命令访问 R 自带的帮助文件,例如,如果想得到 c() 函数更多的信息,可以输入 ?c 查看(不用输入括号)。

> ?c
c                     package:base                     R Documentation

Combine Values into a Vector or List

Description:

     This is a generic function which combines its arguments.

     The default method combines its arguments to form a vector.  All
     arguments are coerced to a common type which is the type of the
     returned value, and all attributes except names are removed.

Usage:
...

下面我们创建一个包含 z 和 555 的新向量。

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

再创建一个向量 c(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

首先是每个元素乘以 2,然后每个元素的计算结果再加上 100.

其他常见的数学运算符有 "+", "-", "/", 和 "^"(squared 平方)。使用函数 sqrt() 得到平方根,以及使用 abs() 函数得到绝对值。

创建一个新函数 my_sqrt, 求 z-1 的平方根:

> my_sqrt <- sqrt(z-1)
> 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

在之前的例子中,当我们计算 z * 2 + 100 时,z 是一个长度为 3 的向量,但是技术上说, 2 和 100 是长度为 1 的向量。其背后的含义是,R 再循环 制造了一个向量 2s 和一个向量 100s,换句话说,当你要求 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]   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
Copyright © xresearcher.com 2020 all right reserved,powered by Gitbook该文件修订时间: 2020-04-02 15:10:08

results matching ""

    No results matching ""