R中函数的NaN错误

时间:2016-06-01 18:29:39

标签: r

我的函数的目标是计算截断的均值,即你给出一个样本,然后计算某些分位数之间所有值的均值。

为此,我写了

 meank<-function(x,k){
  xt<-quantile(x,c(k,1-k));
  mean(x[x>xt[1] & x < xt[2] ])
}

执行meank(rnorm(100),0.4)时,会返回NaN。那是为什么?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

meank的实施中,您取消[k, 1-k]&#34;%&#34;之外的所有值范围,因此当没有留下任何价值时,后续mean必须产生NaN

可重复测试:

> meank(c(1, 2, 2),0.4)
[1] NaN

详细信息逐步评估:

> quantile(c(1, 2, 2),c(0.4,1-0.4))
40% 60% 
1.8 2.0 

> xt <- quantile(c(1, 2, 2),c(0.4,1-0.4))
> mean(c(1, 2, 2)[c(1, 2, 2)>xt[1] & c(1, 2, 2) < xt[2] ])
[1] NaN