【问题标题】:Different results for mean and median function call through apply over missing values通过应用缺失值来调用均值和中值函数的不同结果
【发布时间】:2020-02-29 16:31:03
【问题描述】:

注意到如果矩阵中所有值都缺失,则均值和中位数分别给出 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

【问题讨论】:

  • 这不是真正的apply 问题。 mean(c(NA, NA, NA), na.rm = TRUE) 将提供NaNmedian(c(NA, NA, NA), na.rm = TRUE) 将提供NA

标签: r nan mean na median


【解决方案1】:

NaN 表示“非数字”,也是除以零等运算的结果!

由于mean() 的核心是在后台计算的,有点像sum(x)/len(x)(或等效项),因此存在除法运算,因此如果缺少值(因为 len(NA) 为 0),则可以生成 NaN。 median() 不是这种情况。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多