filter_at不适用于多列

时间:2018-07-23 19:02:02

标签: r filter dplyr

我在尝试使用filter_at来过滤数据中多列的异常值时遇到麻烦(准确地说,最后9列是50:58)。我认为部分问题是我不完全了解.vars_predicate的工作方式。

当我尝试过滤多个列时,通常会收到以下警告:

  

错误:.vars_predicate必须是对all_vars()any_vars()的调用,而不是逻辑的

  

错误:.vars必须是字符/数字矢量或vars()对象,而不是逻辑

这是为单个列[,50]工作的代码:

data3  <- data2 %>%
      filter_at(abs(gaze_duration_n1_norm) <2.5)

就像我提到的那样,我还有8列希望通过这种方式进行过滤。非常感谢您的帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

OP没有提供示例数据,但是从错误消息中,我们可能会猜测这可能有效

filter_at(.tbl = data2 , .vars = 50:58, .vars_predicate = all_vars(abs(.) < 2.5 ))

摘自?filter_at

的示例
# You can vary the selection of columns on which to apply the
# predicate. filter_at() takes a vars() specification:
filter_at(mtcars, vars(starts_with("d")), any_vars((. %% 2) == 0))