强制(coercion)是什么意思?

一般来说 , 强制(coercion)是R灵活处理数据类型的操作 。 当数据条目与预期不匹配时 , 一些预构建的R函数会在抛出错误之前尝试猜测其含义 , 但这也会引起混乱 。 在试图用R编写代码时 , 不理解强制(coercion)可能会让程序员发疯 , 因为它在这方面的行为与大多数其他语言截然不同 。 让我们通过一些例子来了解它 。
01强制(Coercion)
在定义或创建向量时 , 其各个元素须是同种类型的数据 , 如果我们将字符和数字放到一起的话 , 应该会报错的 。 那实际上是这样的吗?在R中定义一个向量 , 如下:
强制(coercion)是什么意思?
文章图片
向量x在定义时既有数字 , 也有字符 , 可是当我们执行此向量时 , 返回的结果非但没有报错 , 且数字均加上了双引号 , 说明其为字符类型的数据 , 即定义时的数字被转换成了字符 。
强制(coercion)是什么意思?
文章图片
以上这种情况即我们所说的 , R强制将数据进行了转换 。 在定义向量时 , 我们把一个字符型数据放在了中间 , 从而也认为“1”和“3”也是字符型 。
强制(coercion)是什么意思?】02转换数据类型的函数
R也提供了一些改变数据类型的函数 , 例如将数字变成字符的as.character函数 。
定义向量x为1至5的整数 , 然后定义向量y , 通过as.character函数把向量x由数字型转换成字符型 。
强制(coercion)是什么意思?
文章图片
反之 , 我们也可以通过as.numeric函数将向量y再次转换成数字型 。
强制(coercion)是什么意思?
文章图片
as.numeric函数在R中非常好用 , 尤其应用于一些实际场景中 , 许多的数据集 , 公共的数据集中会包含数字信息 , 但却会以字符的形式存储 , 此时通过转换函数将其类型更改 , 便于进一步的数据分析 。
03缺失值NA(NotAvailable)
在实际情况中 , 数据丢失是一种常见的问题 , 在R中 , 针对数据丢失 , 有一个特殊的值来表示——NA 。
当一个函数试图将一种类型强制转换为另一种类型 , 并遇到不可能的情况时 , 它通常会向我们发出警告 , 并将数据条目转换为一个名为NA的特殊值 , 表示“不可用” 。
我们定义一个字符对象x , 如下所示 , 再将其转换成数字型 , 中间的字符“b”返回的是一个NA值 , 而1和3则可正常进行强制转换 , 与此同时附带一个Warning信息 。
强制(coercion)是什么意思?
文章图片
当对“b”进行转换时 , R无法猜测想要的数字 , 所以它不会尝试 , 返回一个NA值 , 表示此数据为丢失值 。 作为一名数据科学家 , 可能会经常遇到NA , 因为它们通常用于丢失数据 , 这在现实世界中的数据集中是一个常见的问题 。