R:为什么平均值(NA,na.rm = TRUE)返回NaN

时间:2018-07-24 16:50:30

标签: r nan mean na

当使用所有NA的向量估计均值时,如果NaN,则得到na.rm = TRUE。为什么会这样,这是有缺陷的逻辑,还是我想念的东西?当然使用NA比使用NaN更有意义?

下面的简单示例

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

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

2 个答案:

答案 0 :(得分:3)

?mean没有对此说任何话,这有点可惜。 My comment仅告诉您,将mean应用于空的“数字”会导致NaN,而没有更多的理由。 Rui Barradas's comment试图说明这一点,但并不准确,因为除以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))0,因此mean(numeric(0))0 / 0,即NaN

答案 1 :(得分:1)

摘自mean文档:

  

na.rm一个逻辑值,指示是否应将NA值设置为   在计算开始之前被剥离。

使用此逻辑,在应用函数均值之前,将删除所有NA。在您的情况下,您没有应用均值(删除了所有NA),因此返回了NaN。