←
PDF 320 / 520 Numeric
→
English · PDF 320
Original PDF page 320
中文 · PDF 320

c(TRUE, TRUE, FALSE, NA) #> [1] TRUE TRUE FALSE NA

数值型

整数型(integer)和双精度型(double)向量统称为数值向量。在 R 中,数字默认是双精度型。要创建整数,请在数字后面加一个 L:

typeof(1) #> [1] "double" typeof(1L) #> [1] "integer" 1.5L #> [1] 1.5

整数和双精度数之间的区别通常并不重要,但有两个重要的差异你应该了解:

  • 双精度数是近似值。双精度数表示浮点数,而浮点数并不总是能用固定的内存量精确表示。这意味着你应该把所有双精度数都视为近似值。例如,二的平方根的平方是多少?

x <- sqrt(2) ^ 2 x #> [1] 2 x - 2 #> [1] 4.44e-16

在处理浮点数时这种行为很常见:大多数计算都包含一些近似误差。不要使用 == 来比较浮点数,而应该使用 dplyr::near(),它允许一定的数值容差。

  • 整数有一个特殊值 NA,而双精度数有四个:NA、NaN、Inf 和 -Inf。这三个特殊值都可能在除法运算中出现:

c(-1, 0, 1) / 0 #> [1] -Inf NaN Inf

避免使用 == 来检查这些其他特殊值,而应使用辅助函数 is.finite()、is.infinite() 和 is.nan():