为什么mean(NA,na.rm = TRUE)返回NaN

iaqfqrcu  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(134)

当用所有NA的向量估计均值时,我们得到NaN,如果na.rm = TRUE。为什么会这样,这是错误的逻辑还是我遗漏了什么?使用NA比使用NaN更有意义吗?
下面的快速示例

mean(NA, na.rm = TRUE)
#[1] NaN

mean(rep(NA, 10), na.rm = TRUE)
#[1] NaN

字符串

mspsb9vt

mspsb9vt1#

有点遗憾的是,?mean没有对此说任何话。我的评论只是告诉你,在一个空的“数字”上应用mean会导致NaN,而没有更多的推理。Rui Barradas的评论试图解释这一点,但并不准确,因为除以0并不总是NaN,它可以是Inf-Inf。我曾经在R: element-wise matrix division中讨论过这个问题。然而,我们正在接近。虽然mean(x)不是由sum(x) / length(x)编码的,但这个数学事实确实解释了这个NaN
?sum:

*NB:* the sum of an empty set is zero, by definition.

字符串
所以sum(numeric(0))就是0。因为length(numeric(0))0mean(numeric(0))0 / 0NaN

x6h2sr28

x6h2sr282#

来自mean文档:
na. rm是指示在计算进行之前是否应当剥离NA值的逻辑值。
利用该逻辑,在应用函数均值之前移除所有NA。在你的例子中,你没有应用均值(所有NA都被删除),所以NaN被返回。

相关问题