数据类型是指数据的存储格式,定义了存储在变量中的数据的性质和类别,通常无法分解成更简单的类型。

元素类型(element type)

R 有 5种基础和 4 种特殊的 element types:

基础 特殊
numericinteger(整型)、 double(浮点型) raw(原始型)
logical(逻辑) NA(缺失值)
character(字符串) NULL(空)
complex (复数型) expression(表达式)

2.1 numeric

2.1.1 integer

Show the code
mode(2024L)
#> [1] "numeric"
typeof(2024L)
#> [1] "integer"

2.1.2 double

十进制decimal (),科学计数法scientific () ,十六进制hexadecimal ()

Show the code
mode(1.1)
#> [1] "numeric"
typeof(1.1)
#> [1] "double"
0.1234
#> [1] 0.1234
1.23e-4
#> [1] 0.000123

# 16进制
0x111
#> [1] 273
16^2*1+ 16^1*1 + 16^0*1
#> [1] 273

浮点标准定义的特殊值

Inf(正无穷),-Inf(负无穷),NaN(非数)

  • Infinity 无穷大

    Show the code
    mode(-Inf)
    #> [1] "numeric"
    Inf
    #> [1] Inf
  • NaN,Not a Number,非数字

    Show the code
    NaN
    #> [1] NaN
    0 / 0
    #> [1] NaN
    is.nan(0 / 0)
    #> [1] TRUE
    mode(0 / 0)
    #> [1] "numeric"

2.2 logical

比较运算符 ?Comparison

逻辑运算符?Logic

Show the code
typeof(TRUE)
#> [1] "logical"
x <- c(T,F,T)
y <- c(T,T,F)

# 非
!x
#> [1] FALSE  TRUE FALSE

# 逻辑与
x&y
#> [1]  TRUE FALSE FALSE

# 短路逻辑与 &&主要用于单个逻辑值的短路求值,通常在条件判断语句中使用。
x[1] && y[1]
#> [1] TRUE


# 或
x|y
#> [1] TRUE TRUE TRUE
x[1] || y[1]
#> [1] TRUE

# 异或  不同时为TRUE 或 1
xor(x,y)
#> [1] FALSE  TRUE  TRUE

2.3 character

Show the code
typeof("R language")
#> [1] "character"
sprintf("%.30f", 5.2)
#> [1] "5.200000000000000177635683940025"

2.4 强制类型转换

逻辑 -> 整数 -> 浮点数 -> 字符

2.5 complex

Show the code
z <- 2+3i
typeof(z) 
#> [1] "complex"
is.complex(z)
#> [1] TRUE
# 获取实部
Re(z)
#> [1] 2

# 获取虚部
Im(z)
#> [1] 3

# 模
Mod(z)
#> [1] 3.605551

# 共轭
Conj(z)
#> [1] 2-3i

2.6 raw

Show the code
charToRaw("abcde12345") #每个字符的原始二进制表示(ASCII码)转换成16进制输出
#>  [1] 61 62 63 64 65 31 32 33 34 35
typeof(charToRaw("abcde12345")) 
#> [1] "raw"
# ?raw

2.7 NA

NA,Not Available,该值是其他内容的占位符,因此长度为 1

实际上,每种原子类型有一个缺失值:NA_logical_、NA_integer_、NA_double_、NA_character_。

Show the code
length(NA)
#> [1] 1

2.8 NULL

长度始终为零,并且没有属性。

Show the code
typeof(NULL)
#> [1] "NULL"
length(NULL)
#> [1] 0
is.null(NULL)
#> [1] TRUE
c()
#> NULL

2.9 表达式

expression是一种特殊的 element type,单独的一个expression存储的是一个没有执行的 R 代码

Show the code
expr <- expression(1 + 3)
expr
#> expression(1 + 3)

typeof(expr)
#> [1] "expression"
eval(expr)
#> [1] 4