dummy [1] NA "MGM" NA "M" NA >ifelse(dummy == "NA", -6ren">
gpt4 book ai didi

R:什么是NA_character_?

转载 作者:行者123 更新时间:2023-12-04 08:04:55 25 4
gpt4 key购买 nike

>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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com