R语言 显式强制
将一个对象从一种类型的类强制到另一种类型的类被称为 显式强制。 它是通过一些类似于基函数的函数实现的。但它们与基函数不同,因为它们不是通用的,因此不会调用S3类方法进行转换。
转换、强制和铸造之间的区别
通常情况下,凡是隐式转换的都被称为coercion,如果显式转换则被称为cast。转换意味着两种类型–强制和铸造。
明确的强制转换为字符
有两个函数可以做到这一点: as.character() 和 as.string()。
如果v是一个需要转换为字符的向量,那么它可以这样转换。
- as.character(v, encoding = NULL)
- as.string(v, encoding = NULL)
这里编码参数通知R编译器关于向量的编码,并帮助内部管理字符和字符串向量。
# Creating a list
x<-c(0, 1, 0, 3)
# Converting it to character type
as.character(x)
输出
[1] "0" "1" "0" "3"
对数字和逻辑的显式强制执行
它们都是只有一个参数的*
函数,也就是一个要转换的向量。
函数 | 描述 |
---|---|
as.logical | 将值转换为逻辑类型。 如果有0,那么它将被转换为FALSE。任何其他的值都被转换为 “真”。 |
as.integer | 将对象转换为整数类型 |
as.double | 将对象转换为双精度类型 |
as.complex | 将对象转换为复数类型 |
as.list | 它只接受字典类型或矢量作为参数的输入参数。 |
# Creating a list
x<-c(0, 1, 0, 3)
# Checking its class
class(x)
# Converting it to integer type
as.numeric(x)
# Converting it to double type
as.double(x)
# Converting it to logical type
as.logical(x)
# Converting it to a list
as.list(x)
# Converting it to complex numbers
as.complex(x)
输出
[1] "numeric"
[1] 0 1 0 3
[1] 0 1 0 3
[1] FALSE TRUE FALSE TRUE
[[1]]
[1] 0
[[2]]
[1] 1
[[3]]
[1] 0
[[4]]
[1] 3
[1] 0+0i 1+0i 0+0i 3+0i
产生NAs
如果R不能决定胁迫某个对象的方式,那么在显式胁迫过程中会产生NA。
# Creating a list
x<-c("q", "w", "c")
as.numeric(x)
as.logical(x)
输出
[1] NA NA NA
Warning message:
NAs introduced by coercion
[1] NA NA NA