R学习:R for Data Science 向量(1)
R学习往期回顾:
R学习 从Tidyverse学起,入门R语言 dplyr合并数据
R学习 从Tidyverse学起,入门R语言(tidyr和stringr)
R学习 从Tidyverse学起,入门R语言(tibble,readr和dplyr)
向量基础
向量的类型主要有两种 · 原子向量,其共有 6 种类型:逻辑型、 整型、 双精度型、 字符型、 复数型和原始型。整型和双精度型向量又统称为数值型向量。
· 列表,有时又称为递归向量,因为列表中也可以包含其他列表。
原子向量与列表之间的主要区别是,原子向量中的各个值都是同种类型的,而列表中的各个值可以是不同类型的。NULL 是一个与向量相关的对象,用于表示空向量(与表示向量中的一个值为空的 NA 不同),通常指长度为 0 的向量。
每个向量都有两个关键属性
· 类型。你可以使用 typeof() 函数来确定向量的类型:
library(tidyverse)
typeof(letters)
#> [1] "character"
typeof(1:10)
#> [1] "integer"
· 长度。你可以使用 length() 函数来确定向量的长度 :
x <- list("a", "b", 1:10)
length(x)
#> [1] 3
还可以向向量中任意添加额外的元数据,这些元数据称为特性。特性可以用来创建扩展向量,以执行一些新的操作。比较重要的扩展向量有 4 种类型。
· 基于整型向量构建的因子。
· 基于数值型向量构建的日期和日期时间。
· 基于列表构建的数据框和 tibble。
重要的原子向量
4 种最重要的原子向量类型是逻辑型、整型、双精度型和字符型。
逻辑型
1:10 %% 3 == 0
#> [1] FALSE FALSE TRUE FALSE FALSE
#> [2] TRUE FALSE FALSE TRUE FALSE
c(TRUE, TRUE, FALSE, NA)
#> [1] TRUE TRUE FALSE NA
数值型
整型与双精度型向量统称为数值型向量。R 中默认数值是双精度型的。如果想要创建整型数值,可以在数字后面加一个 L
整型和双精度型之间的区别一般并不重要,但你需要注意其中两个重要区别。
· 双精度型是近似值。双精度型表示的是浮点数,不能由固定数量的内存精确表示。这意味着你应该将所有双精度数当成近似值。例如, 2 的平方根的平方是多少?
x <- sqrt(2) ^ 2
x
#> [1] 2
x - 2
#> [1] 4.44e-16
在处理浮点数时,这种现象非常普遍:多数计算都包括一些近似误差。在比较浮点数时,不能使用 ==,而应该使用 dplyr::near(),后者可以容忍一些数据误差
整型数据有 1 个特殊值 NA,而双精度型数据则有 4 个特殊值:NA、 NaN、 Inf 和 -Inf。其他 3 个特殊值都可以由除法产生:
c(-1, 0, 1) / 0
#> [1] -Inf NaN Inf
不要使用 == 来检查这些特殊值,而应该使用辅助函数 is.finite()、 is.infinite() 和is.nan()
字符型
字符向量是最复杂的一种原子向量,因为其每个元素都是一个字符串,而字符串可以包含任意数量的数据。
缺失值
每种类型的原子向量都有自己的缺失值
NA # 逻辑型
#> [1] NA
NA_integer_ # 整型
#> [1] NA
NA_real_ # 双精度型
#> [1] NA
NA_character_ # 字符型
#> [1] NA
公众号“生信小课堂”