gpt4 book ai didi

r - 具有 "NaN"值的函数表的意外行为

转载 作者:行者123 更新时间:2023-12-03 14:52:09 25 4
gpt4 key购买 nike

最近,我在 table 遇到了一个行为。功能不是我所期望的:

例如,让我们采用以下向量:

ex_vec <- c("Non", "Non", "Nan", "Oui", "NaN", NA)

如果我检查 NA我的向量中的值, "NaN"不被认为是一个(如预期的那样):
is.na(ex_vec)
# [1] FALSE FALSE FALSE FALSE FALSE TRUE

但是,如果我试图获得不同的值频率:
table(ex_vec)
#ex_vec
#Nan Non Oui
# 1 2 1
"NaN"没有出现在表中。

但是,如果我“问” table显示 NA值(value)观,我明白了:
table(ex_vec, useNA="ifany")
#ex_vec
# Nan NaN Non Oui <NA>
# 1 1 2 1 1

因此,字符串 "NaN"被视为 NA内部值 table调用,同时在输出中被视为不是 NA值(value)。

我知道(这会更好)我可以通过将向量转换为 factor 来解决我的问题。尽管如此,我真的很想知道这里发生了什么。有没有人有想法?

最佳答案

factor匹配向量的级别,它转换其 exclude列出与输入向量相同的类型:

exclude <- as.vector(exclude, typeof(x))

所以如果你的排除列表有 NaN并且您的向量是字符,会发生这种情况:
as.vector(exclude, typeof(letters))
[1] NA "NaN"

哦亲爱的。现在真正的 "NaN"字符串将被排除。

要修复,请使用 exclude=NAtable (和 factor,如果您正在制造可能会影响此的因素)。

我确实喜欢 factor 的文档中的这个:
 There are some anomalies associated with factors that have ‘NA’ as
a level. It is suggested to use them sparingly, e.g., only for
tabulation purposes.

让人放心...

关于r - 具有 "NaN"值的函数表的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34070563/

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