gpt4 book ai didi

r - NA 匹配 NA,但不等于 NA。为什么?

转载 作者:行者123 更新时间:2023-12-03 23:32:04 42 4
gpt4 key购买 nike

在 R Language Definition 中,对NA值进行了简要描述,其中一部分说

... In particular, FALSE & NA is FALSE, TRUE | NA is TRUE. NA is not equal to any other value or to itself; testing for NA is done using is.na. However, an NA value will match another NA value in match.



关于声明“ NA 不等于
任何其他值或本身
“,

更新:
再次修改的问题是

NA 匹配 NA 后面的 后面的推理是什么,如果有的话,“10457919”和5“104579104”和5“104579104”语言中的5“1457109”在哪里

任何人都不知道的缺失值(或者它不会缺失)与另一个相同类型的缺失值匹配,这对我来说没有意义。自从我发布这篇文章后,我在match中发现了一些可以提供一些推理的东西。字符强制改变其类型。如果我愿意,我可以完全删除它。
match(NA, NA)
# [1] 1
match(NA, NA_real_)
# [1] 1
match(NA_character_, NA_real_)
# [1] 1
match(paste(NA), NA)
# [1] NA
gsub("NA", "", NA)
# [1] NA
gsub("NA", "", paste(NA))
# [1] ""
is.na(NA)
# [1] TRUE
is.na(paste(NA))
# [1] FALSE

为搅动锅而道歉,但有些文档对此不清楚。它可能归结为 R 解析器/解析器以及您可以将任何内容转换为 R 中的文本字符对象的事实。

原帖:

现在指的是“但是,example(match)值将匹配NA值在“1045”1047776

如果NA不等于它自己,为什么它在match中与自己匹配?还有NA?这是故意的吗?
NA == NA  ## expecting TRUE
# [1] NA
NA != NA
# [1] NA
x <- NA
x == x
# [1] NA
match(NA, NA)
# [1] 1
identical(NA, NA)
# [1] TRUE
all.equal(NA, NA)
# [1] TRUE

最佳答案

这是约定俗成的问题。方式有充分的理由==作品。 NA是 R 中的一个特殊值,它应该表示缺失的数据,并且应该与其余数据区别对待。如果我们开始比较缺失值,就好像它们是已知的或者两个缺失值彼此相等,那么可能会出现无数非常微妙的错误。

想想NA意思是“我不知道那里有什么”。 3 > NA的正确答案显然是NA因为我们不知道缺失值是否大于 3。嗯,对于 NA == NA 也是一样的.它们都是缺失值,但真实值可能大不相同,因此正确答案是“我不知道”。

R 不知道您在分析中在做什么,因此与其潜在地引入后来最终会发布并使您尴尬的错误,不如让比较运算符认为 NA 是一个值。
match()编写时考虑了更具体的目的:查找匹配值的索引。如果您问“我应该将 3 与 NA 匹配吗”这个问题,合理的答案是“不”。不同(且非常有用)的约定,并且是合理的,因为当您调用 match() 时,R 几乎知道您要做什么。 .现在,我们应该匹配 NANA以此目的?可以争论。

想想看,我觉得 match() 的作者有点奇怪。选择允许 NA默认情况下与自身匹配。您可以想象您可能会使用 match() 的情况。找 NA table 中的行与其他值一起,但它是危险的。您只需要更加小心地了解 x 中是否有任何 NA 值,并且仅在您真的想要时才允许它们。您可以通过指定 incomparables=NA 来更改此行为。打电话时match() .

关于r - NA 匹配 NA,但不等于 NA。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100974/

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