[如果在矩阵中缺少所有值,则平均值和中位数分别给出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
NaN的意思是“不是数字”,也是由除零等运算引起的!
由于mean()
的心脏是在后台计算的,类似于sum(x)/len(x)
(或等效值),因此存在除法运算,因此,如果缺少值(由于len(NA)为0),则可以生成NaN。 median()
并非如此。
在任何情况下,对is.na()
或complete
进行过滤就足够了。同样根据文档,is.na()
对于NaN输出TRUE。