将空白 space 元素解释为 R 函数 factor() 中的有效因子元素的好处?

Benefit of interpreting blank space elements as valid factor elements in the R function factor()?

基本 R 函数 factor() 将由空白 space 组成的字符元素解释为有效因子元素,而不是 NA。像这样解释空白 space 字符元素有什么好处?它是为了保持兼容性而保留的遗留功能吗?

示例:

factor(c("a","a","","b"))

我意识到这不是一个可以用可重现的例子作为起点来解决的普通问题,但我还是决定试一试。让 factor() 解释像这样的空白 space 字符元素的设计决定让我感到困惑。在我看来,将这些元素解释为 NA 会简化事情,没有明显的缺点。

What is the benefit of interpreting blank space character elements like this?

因为空字符串数据通常表示“这是一个空字符串”,而不是“这是缺失数据”。

这当然取决于用法:空的“名称”字段很可能是缺失数据。但是一个空的“标题”字段就是这样:没有标题。否则您将如何编码缺少标题(假设“先生”和“夫人”有一个单独的字段,情况可能并非如此)。

对于因素,空标签意义不大。但是,R 倾向于非常自由地将字符串转换为因子(尤其是在从文件中读取表格数据时),并将所有这些空值视为 NA 会导致大量 mis-annotated 数据。一般来说,这种隐式转换应该始终是无损的,即保留正在转换的值的整个域。