【发布时间】:2016-08-17 06:14:37
【问题描述】:
我正在尝试制作一个简单的函数,它会自动查找和删除异常值。这是我目前创建的函数:
fOutlier <- function(x, y) {
outlier <- with(x, boxplot.stats(y)$out)
subset(x, !(y %in% outlier))
}
data <- fOutlier(data, variable)
问题在于该函数没有将 x 读取为数据集名称。如果我使用以下内容,它会起作用:
data <- fOutlier(data, data$variable)
【问题讨论】:
-
subset和with使用非标准评估。非常适合交互式使用,功能中可能存在问题,请参阅 adv-r.had.co.nz/Computing-on-the-language.html#nse-downsides 使用boxplot(x[[y]])。但是自动去除异常值可能是个坏主意 -
谢谢。我知道不建议在不检查数据的情况下删除异常值,但我这样做是出于学习目的。这个
boxplot(x[[y]])不起作用! -
该代码期望 y 是作为字符串的列名(或给出列号的整数)
-
y是列名(变量名)。当我给出列数时仍然不起作用。with不是函数内部的正确函数。我必须考虑其他选择。