当使用所有NA的向量估计均值时,如果NaN
,则得到na.rm = TRUE
。为什么会这样,这是有缺陷的逻辑,还是我想念的东西?当然使用NA
比使用NaN
更有意义?
下面的简单示例
mean(NA, na.rm = TRUE)
#[1] NaN
mean(rep(NA, 10), na.rm = TRUE)
#[1] NaN
答案 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。