我写了一个函数来反复删除异常值(对于距离中位数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的值
我想知道为什么我收到此错误消息?我花了很长时间试图解决它,但不能。如果有人能帮助我,我感激不尽。非常感谢。