数值向量

一个数值向量就是由数值组成的向量。单个数值(标量数值)就是最简单的数值向量。
举一个例子:
1.5
## [1] 1.5
数值向量是最常用的数据类型,也几乎是所有数据分析的基础。在其他流行的编程语
言中,存在一些标量类型,例如整型、双精度型和字符串型。这些标量是构成如向量等其
他容器类型的基础。然而,在 R 中并没有对于标量类型的正式定义。标量数值只不过是数
值向量的特例,并且仅仅特殊之处在其长度为 1。
当我们创建一个值的时候,会很自然地想到如何存储它以备后续使用。为了存储这个
值,我们可以使用<-将这个值赋给一个“符号”。换句话说,我们为这个值(1.5)创建了
一个名为 x 的变量:
x <- 1.5
这个值被分配给了符号 x,之后我们可以用 x 来表示它:
x
## [1] 1.5
创建一个数值向量有许多种方法。我们可以调用 numeric( )来创建一个由 0 组成的
指定长度的向量:
numeric (10)
## [1] 0 0 0 0 0 0 0 0 0 0
18 第 2 章 基本对象
我们也可以使用 c( )把多个向量组合成一个向量。最简单的情况是,组合多个单元
素向量构成一个多元素向量:
c(1, 2, 3, 4, 5)
## [1] 1 2 3 4 5
我们还可以将多个单元素向量和多元素向量连接起来构成一个向量,使其和之前创建
的向量具有相同的元素:
c(1, 2, c(3, 4, 5))
## [1] 1 2 3 4 5
如果想要创建一系列连续的整数值,运算符“:”能够轻松地实现这一点。
1:5
## [1] 1 2 3 4 5
准确地说,以上代码产生的是整数值向量而不是数值向量。在很多情况下,它们之间
的区别并不重要。我们之后将会讨论这个问题。
产生一个数值序列,更通用的方法是使用 seq( )。例如,以下代码产生了一个数值
向量,它由从 1 开始,到 10 结束,步长为 2 的序列组成:
seq(1, 10, 2)
## [1] 1 3 5 7 9
像 seq( )这样的函数有很多参数。我们可以通过提供其所有的参数来调用这个函数,
但在大多数时候并不必要。大部分函数对其部分参数提供了合理的默认值,这使得我们能
够更加轻松地调用它们。在现在这种情况下,我们只需指定想要更改的参数即可。
例如,可以通过指定 length.out 这个参数来创建另外一个从 3 开始,长度为 10 的
数值向量:
seq(3, length.out = 10)
## [1] 3 4 5 6 7 8 9 10 11 12
如上所示的函数调用过程,只修改了参数length.out 的取值,其他参数的值保持默认值。
尽管我们可以使用多种方法定义数值向量,但是必须始终小心地使用“:”运算符,举
一个例子:
1 + 1:5
## [1] 2 3 4 5 6
从结果来看,1 + 1:5 并不意味着一个从 2~5 的序列,而是一个从 2~6 的序列。这
是因为“:”比“+”具有更高的优先级,这使得首先产生的是 1:5,接着才对每一个值加 1,
这才产生了你在结果中所看到的序列。我们之后会讨论关于运算符优先级的问题。

posted @ 2019-01-22 09:43  NAVYSUMMER  阅读(925)  评论(0编辑  收藏  举报
交流群 编程书籍