我的函数的目标是计算截断的均值,即你给出一个样本,然后计算某些分位数之间所有值的均值。
为此,我写了
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
。那是为什么?
任何帮助将不胜感激。
答案 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