平均值和中位数函数调用的不同结果通过应用于缺失值

问题描述 投票:0回答:1

[如果在矩阵中缺少所有值,则平均值和中位数分别给出NA和NaN,]

例如,

x<-as.matrix(c(NA, NA, NA))
apply(x,2, mean, na.rm = TRUE)
> apply(x,2, median, na.rm = TRUE)
[1] NA
> apply(x,2, mean, na.rm = TRUE)
[1] NaN

想知道这可能是什么原因,如果我仅检查is.na()进行过滤,它在下游会有所不同吗?因为我看到is.na()一直都是TRUE:

> is.nan(apply(x,2, median, na.rm = TRUE))
[1] FALSE
r nan mean na median
1个回答
2
投票

NaN的意思是“不是数字”,也是由除零等运算引起的!

由于mean()的心脏是在后台计算的,类似于sum(x)/len(x)(或等效值),因此存在除法运算,因此,如果缺少值(由于len(NA)为0),则可以生成NaN。 median()并非如此。

在任何情况下,对is.na()complete进行过滤就足够了。同样根据文档,is.na()对于NaN输出TRUE。

© www.soinside.com 2019 - 2024. All rights reserved.