Lesson 4: 向量

R 语言中最简单以及最常用的数据结构是向量。

向量有两类:原子向量列表。原子向量仅包含一种数据类型,而列表可以包含多种数据类型。

在之前的课程中,我们处理的都是是数字向量,这是原子向量的一种类型。其他的原子向量类型包括逻辑向量,整数向量,双向量和字符向量。整数和双向量统称为数字向量。本课程中,我们来学习下逻辑向量和字符向量。

逻辑向量

逻辑向量包含的值是 TRUE, FALSENA (意思是 not availabel)。这些值由逻辑 条件 的结果生成。我们来试一些简单的条件。

首先,创建一个名为 num_vect 的数字向量,包含(0.5, 55, -10, 6).

> num_vect <- c(0.5, 55, -10, 6)

现在,创建一个称为 tf 的变量,得到 num_vect < 1 的结果。

> tf <- num_vect < 1

你认为 tf 的结果是什么样的呢?是一个逻辑值,还是一个包含 4 个逻辑值的向量呢?我们看一下结果:

> tf
[1]  TRUE FALSE  TRUE FALSE

num_vect < 1 是个判断条件,tf 会判断每个元素是否符合判断条件,然后返回每个元素的逻辑值。

我们来尝试另一个判断条件:

> num_vect >= 6
[1] FALSE  TRUE FALSE  TRUE

上述例子中的 <>= 符号称为逻辑运算符,其他的逻辑运算符有:>, <=, ==(等于) 和 !=(不等于).

如果有两个逻辑表达式呢,比如 A | B 表示 A 或 B 至少一个为 TRUE 的判断结果,A & B 表示 A 和 B 都是 TRUE 的判断结果。比如下面这些例子:

| (3 > 5) & (4 == 4)

1: FALSE
2: TRUE

Selection: 1

| Your dedication is inspiring!

| (TRUE == TRUE) | (TRUE == FALSE)

1: TRUE
2: FALSE

Selection: 1

| Nice work!

| ((111 >= 111) | !(TRUE)) & ((4 + 1) == 5)

1: TRUE
2: FALSE

Selection: 1

| Your dedication is inspiring!

字符向量

字符向量也在 R 语言中十分普遍。区分字符串可使用双引号("")。

创建一个名为 my_char 的字符串向量,使其包含下列单词:"My", "name", "is".

> my_char <- c("My", "name", "is")
> my_char
[1] "My"   "name" "is"

my_char 是一个长度为 3 的字符向量,如果想将字符向量转换成一个字符串(可以看成是一个元素数为 1 的向量),可以使用 paste() 函数:

> paste(my_char, collapse = " ")
[1] "My name is"

collapse 参数是告诉 R,我们想用 单空格 分隔开 my_char 中的元素。

使用 c() 函数在 my_char 后面添加内容:

> my_name <- c(my_char, "Daddy")
> my_name
[1] "My"    "name"  "is"    "Daddy"

再次使用 paste() 函数,将 my_name 转换成一个单独的字符串,不要忘了加上 collapse = " "!

> paste(my_name, collapse = " ")
[1] "My name is Daddy"

在一些简单的例子中,可以使用 paste() 做两个长度为 1 的字符串的加法,例如 paste("Hello", "world!", sep = " ")sep 参数的意思是用空格分隔开两个加入的元素。

> paste("Hello", "world!", sep = " ")
[1] "Hello world!"

下面我们将一个整数向量与字符串向量相加:

> paste(1:3, c("X", "Y", "Z"), sep = "")
[1] "1X" "2Y" "3Z"

如果两个相加的向量长度不同该如何?(我们之前谈论过,向量回收机制(再循环机制?如何翻译?)

> paste(LETTERS, 1:4, sep = "-")
 [1] "A-1" "B-2" "C-3" "D-4" "E-1" "F-2" "G-3" "H-4" "I-1" "J-2" "K-3" "L-4"
[13] "M-1" "N-2" "O-3" "P-4" "Q-1" "R-2" "S-3" "T-4" "U-1" "V-2" "W-3" "X-4"
[25] "Y-1" "Z-2"

LETTERS 是 R 预定义的变量,是包含了全部 26 个英语字母的字符串向量。

因为字符向量 LETTERS 长于数字向量 1:4,所以 R 简单的循环,重复,直到 1:4 匹配到 LETTERS 的长度。

不值一提的是,数字向量 1:4 可以使用 paste() 函数 强制融合 进字符向量。我们会在其他课程中探讨 强制融合 的机制,但是它的真实含义是数字 1,2,3 和 4,在输出的结果中对 R 来说,不再是数字,而是字符串 "1", "2", "3" 和 "4".

Copyright © xresearcher.com 2020 all right reserved,powered by Gitbook该文件修订时间: 2020-03-11 11:32:29

results matching ""

    No results matching ""