R:什么是NA_character_?

标签 r

>dput(dummy)
c(NA, "MGM", NA, "M", NA)

>dummy
[1] NA    "MGM" NA    "M"   NA 

>ifelse(dummy == "NA", 0, 1)
NA  1 NA  1 NA

我有一个字符向量,我想替换 NA值为 0,其他值为 1。但是,我不知道这些 NA 到底是什么字符是?正如您在上面看到的,它们不是 "NA" .当我尝试 dput(dummy[1])我得到 NA_character_ .我该怎么做才能让 ifelse 语句识别那些 NA年代?

最佳答案

在 R 中,没有任何东西等于 NA(当我们不知道它是什么时,怎么可能是 ==NA?)但它可能等于“NA”(缩写中的两个字母的字符值北美。NA(无引号)是一个特殊的缺失值占位符,实际上有不同的风格,每个原子类都有一个。

 ?NA   # where you can read about the other flavors of NA
 NA_character_
#[1] NA
正如 C_Z_ 所指出的,您可以并且应该使用 is.na() 来检测这些特殊(非)值。您的 ifelse 测试将在字符向量的值为“NA”的任何位置返回 0,但使用“==”对 NA 进行的相等性测试将始终返回 NA。
> dummy == NA
[1] NA NA NA NA NA
这些可能不那么令人费解:
> ifelse( is.na(dummy), 0, 1)
[1] 0 1 0 1 0
> 0+!is.na(dummy)   # using 0+... to coerce logical to numeric
[1] 0 1 0 1 0

关于R:什么是NA_character_?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37400665/

相关文章:

r - 创建 beta 分布 Q-Q 图

r - 无法显示png

r - 替换一个数据框中的行(如果它们出现在另一数据框中)

Python:对 True/False 向量的运算

r - 如何根据本地日期设置使用RGA软件包从Google Analytics(分析)帐户获取每周数据

r - 给定条件强制字符串的函数

R 和 DT - 您可以将行副标题和组添加到数据表中吗?

r - Spotfire - 所有输出均已使用脚本 R 删除

舍入接近 0 值

r - 将因子水平顺序从一列复制到另一列