首页 > 解决方案 > 我在从删除异常值的函数中返回 R 中的数据框对象时遇到问题

问题描述

我正在尝试创建一个函数,该函数返回数据框的其余部分,并为特定列删除了异常值,但无论我使用什么列,返回的数据框对象始终为空。

remove_outlier = function(dataframe,column){
  average = mean(dataframe[[column]])
  std = sd(dataframe[[column]])
  cutoff = 3 * std
  lower = average - cutoff
  upper = average + cutoff
  print(lower)
  new = dataframe[dataframe[[column]] > lower & dataframe[[column]] < lower]

  return(new)

}

testing = remove_outlier(BostonHousing,'age')

head(testing)

标签: routliers

解决方案


 new = dataframe[dataframe[[column]] > lower & dataframe[[column]] < lower]

由于没有等号,因此不可能同时大于一个值和小于一个值但不相等。这条线是不正确的,我怀疑你打算在那里代替。

new = dataframe[dataframe[[column]] > lower & dataframe[[column]] < upper,]

编辑:添加逗号,感谢 u/maydin 的捕获。


推荐阅读