函数递归删除异常值

时间:2017-05-03 10:22:08

标签: r

我写了一个函数来反复删除异常值(对于距离中位数3sd的任何数据点。

rm.outlier <- function (var) {
    has.3sd =1
    while (has.3sd>0) {
        for (l in var) {
            if ( (l-median(var))> 3*sd(var) & !is.na(l)) {
                var[var==l] <- NA
            }
        }
        has.3sd <- sum(var > 3*sd(var))
        if (has.3sd==0) {
            break
        }
    }
    return (var)
}

但是,我总是收到错误消息:

  

if((l - median(var))&gt; 3 * sd(var)&amp;!is.na(l)){:     缺少需要TRUE / FALSE的值

我想知道为什么我收到此错误消息?我花了很长时间试图解决它,但不能。如果有人能帮助我,我感激不尽。非常感谢。

0 个答案:

没有答案